Board logo

标题: [文本处理] [已解决]批处理在当前目录下所有子文件夹里创建指定文件夹并把文件移动到相应文件夹里 [打印本页]

作者: SandraRusso    时间: 2015-2-7 14:03     标题: [已解决]批处理在当前目录下所有子文件夹里创建指定文件夹并把文件移动到相应文件夹里

本帖最后由 pcl_test 于 2016-12-1 13:46 编辑

一个文件夹下有很多子文件夹,子文件夹中包含有规律编号的图片,比如1-1,1-2,1-3,2-1,2-1,3-1,3-2,4-1,5-1,6-1……,20-1,现在想在每个子文件夹中都创建厂家和型号两个文件夹,然后要把1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片统一放到厂家文件夹,其余编号照片放到型号文件夹中,请教高手如何实现?感谢~ 我这有段代码,但是运行后没有反应?
@echo off
for /f "tokens=*" %%i in ('dir/ad') do (
pushd "%%i"
md 厂家
for /l %%i in (1,1,5) do move %%i* 厂家
md 型号
for /l %%i in (6,1,20) do move %%i* 型号
popd)
作者: DAIC    时间: 2015-2-7 14:12

最后那个中文的 )需要改成英文的 )
作者: DAIC    时间: 2015-2-7 14:14

专治“一闪而过”的秘方:

代码里面的 @echo off 删掉
保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到报错信息。
作者: SandraRusso    时间: 2015-2-7 14:32

谢谢您啊!程序是可以运行了,但是发现所有照片都归属到厂家文件夹里面了,型号文件夹是空的,您能帮我看看是怎么回事吗?
另外我是想在G盘下的H文件夹的1、2、3……等等子文件下创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,要怎么编写代码呢?
作者: Batcher    时间: 2015-2-7 14:39

move %%i-* 厂家
这里加个横线试试
作者: SandraRusso    时间: 2015-2-7 14:48

加了-果然可以啦!哈哈 高手呀~但是现在如果在每个子文件下运行一遍批处理文件就太麻烦了,想在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,要怎么完善代码呢?
作者: SandraRusso    时间: 2015-2-7 14:49

回复 5# Batcher


加了-果然可以啦!哈哈 高手呀~但是现在如果在每个子文件下运行一遍批处理文件就太麻烦了,想在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,要怎么完善代码呢?
作者: SandraRusso    时间: 2015-2-7 14:51

回复 3# DAIC

谢谢您啊!程序是可以运行了,但是发现所有照片都归属到厂家文件夹里面了,型号文件夹是空的,您能帮我看看是怎么回事吗?
另外我是想在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,要怎么完善代码呢?
作者: SandraRusso    时间: 2015-2-7 15:09     标题: 在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹

我是想在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,要怎么完善代码呢?
@echo off
for /f "tokens=*" %%i in ('dir/ad') do (
pushd "%%i"
md 厂家
for /l %%i in (1,1,5) do move %%i-* 厂家
md 型号
for /l %%i in (6,1,20) do move %%i* 型号
popd)
作者: SandraRusso    时间: 2015-2-7 16:21     标题: 如何在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹?

我想在G盘下的H文件夹的1、2、3……等等子文件下都同时创建厂家和型号两个文件夹,哪位高手帮忙给完善下此代码呢?多谢啦!@echo off for /f "tokens=*" %%i in ('dir/ad') do ( pushd "%%i" md 厂家 for /l %%i in (1,1,5) do move %%i* 厂家 md 型号 for /l %%i in (6,1,20) do move %%i* 型号 popd)
作者: 愤怒的CMD    时间: 2015-2-7 17:01

for /f %%i in ('dir/b/ad G:\H') do cd/d G:\H\%%i && md 厂家 型号
作者: SandraRusso    时间: 2015-2-7 17:19

回复 2# 愤怒的CMD


    谢谢您!能麻烦您在我的代码中帮忙修改下么?因为我是想在G盘下的H文件夹的1、2、3……等等子文件下创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,比如1-1,1-2,1-3,2-1,2-1,3-1,3-2,4-1,5-1,6-1……,20-1,现在想在每个子文件夹中都创建厂家和型号两个文件夹,然后要把1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片统一放到厂家文件夹,其余编号照片放到型号文件夹中,要怎么编写代码呢?
作者: 慕夜蓝化    时间: 2015-2-7 17:27

  1. @echo off
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号"
  4. )
  5. pause
复制代码

作者: SandraRusso    时间: 2015-2-7 17:30

回复 4# 慕夜蓝化

谢谢您!能麻烦您在我的代码中帮忙修改下么?因为我是想在G盘下的H文件夹的1、2、3……等等子文件下创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,比如1-1,1-2,1-3,2-1,2-1,3-1,3-2,4-1,5-1,6-1……,20-1,现在想在每个子文件夹中都创建厂家和型号两个文件夹,然后要把1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片%
作者: SandraRusso    时间: 2015-2-7 17:31

回复 4# 慕夜蓝化

谢谢您!能麻烦您在我的代码中帮忙修改下么?因为我是想在G盘下的H文件夹的1、2、3……等等子文件下创建厂家和型号两个文件夹把这些相应编号照片归属到对应的文件夹中,比如1-1,1-2,1-3,2-1,2-1,3-1,3-2,4-1,5-1,6-1……,20-1,现在想在每个子文件夹中都创建厂家和型号两个文件夹,然后要把1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片统一放到厂家文件夹,其余编号照片放到型号文件夹中,要怎么编写代码呢?
作者: 慕夜蓝化    时间: 2015-2-7 17:47

回复 6# SandraRusso
  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号" 2>nul
  4.     pushd "%%~fsi"
  5.     for %%a in (*.*) do (
  6.         set "str=%%a"&set "n=!str:~,1!"
  7.         if !n! lss a (
  8.             move "%%a" 厂家
  9.         ) else (
  10.             move "%%a" 型号
  11.         )      
  12.     )
  13.     popd
  14. )
  15. pause
复制代码

作者: pcl_test    时间: 2015-2-7 17:49

本帖最后由 pcl_test 于 2015-2-7 18:07 编辑

回复 1# SandraRusso

晕,请不要刷题,这样很不好
  1. @echo off
  2. set "filesdir=G:\H\"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. md "厂家\" "型号\"
  6. for /l %%a in (1,1,5) do move %%a-*.* "厂家\"
  7. move *.* "型号\"
  8. popd
  9. )
  10. pause
复制代码

作者: SandraRusso    时间: 2015-2-7 18:01

回复 7# 慕夜蓝化

程序基本可以达到效果了,但是发现所有照片都归属到厂家文件夹里面了,型号文件夹是空的,没有把对应的图片编号移动到对应文件夹内!
作者: SandraRusso    时间: 2015-2-7 18:09

回复 9# pcl_test

不好意思呀!我刚刚接触这个,是个菜鸟!主要太想知道怎么解决这个问题了,哈哈 太感谢您了!可以加您为好友么?以后好多多向您请教啊!
作者: 慕夜蓝化    时间: 2015-2-7 18:11

回复 8# SandraRusso

这里是判断了文件名的第一个字符,如果是数字便移动到厂家文件夹中去,如果是字母或者汉字便移动到型号文件夹中去。
你再细说一下你的条件,我把判断规则改下。
作者: SandraRusso    时间: 2015-2-7 18:16

回复 9# 慕夜蓝化

好的!谢啦!条件为:一个文件夹下有很多子文件夹1/2/3,子文件夹中包含有规律编号的图片,比如1-1,1-2,1-3,2-1,2-1,3-1,3-2,4-1,5-1,6-1……,*-1,现在想在每个子文件夹中都创建厂家和型号两个文件夹,然后要把1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片统一放到厂家文件夹,其余编号照片放到型号文件夹中!
作者: pcl_test    时间: 2015-2-7 18:18

回复 10# SandraRusso
问题只要提一次就好,白天大家一般都不怎么有空,都是在晚上比较活跃,所以如果急着要回答,不建议在论坛提问,但只要你提了,迟早都会有人回答的
最后如果问题解决,请在标题最前面标上[已解决]
作者: SandraRusso    时间: 2015-2-7 18:19

回复 9# pcl_test

如果您不介意的话,可以加下您QQ么?我给您发短消息了,您直接在那上面告诉我就成!
作者: pcl_test    时间: 2015-2-7 18:21

回复 12# SandraRusso

这个你可以加官方Q群的
作者: 慕夜蓝化    时间: 2015-2-7 18:21

本帖最后由 慕夜蓝化 于 2015-2-7 18:26 编辑

回复 10# SandraRusso

“1-1,2-2,3-3,4-1,5-1(以首位数字为主的编号例如1-5的)照片统一放到厂家文件夹”这里的首位数字为主的意思,是指的文件名前三位吗?或者说只要是(数字-数字)的样式便移动到厂家中去?
你能不能把几种不同的文件名样式复制一下,打出来,我们好做个比对,只听你讲编号什么的,很晕。
作者: SandraRusso    时间: 2015-2-7 18:24

回复 11# 慕夜蓝化

是第一位数字!
作者: SandraRusso    时间: 2015-2-7 18:28

回复 13# pcl_test
已经在群里面啦!但是刚才在群里面没人回复,所以非常感谢您,想加下您的Q
作者: SandraRusso    时间: 2015-2-7 18:32

回复 11# 慕夜蓝化

比如1-1,2-2,3-3,4-1,5-1移动到厂家去,6-1,6-2,7-5,9-1,……其他的放到型号中去!
作者: 慕夜蓝化    时间: 2015-2-7 18:33

回复 12# SandraRusso

= = 为什么我这里测试的可以啊,你把那个文件名全名打出来,包括文件名后缀,我们看一下;还有你要移动到厂家内的文件名也看一下,举例就行。
作者: 慕夜蓝化    时间: 2015-2-7 18:35

回复 13# SandraRusso

特么的...你的意思是首位数字小于等于5的放到厂家中去,首位数字大于5的放到型号中去。是吗?
作者: SandraRusso    时间: 2015-2-7 18:38

回复 14# 慕夜蓝化


    移动到厂家的文件为1-1.JPG,2-2.JPG,3-3.JPG,4-1.JPG,5-1.JPG,其他的.JPG照片都移动到型号里面
作者: 慕夜蓝化    时间: 2015-2-7 18:40

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号" 2>nul
  4.     pushd "%%~fsi"
  5.     for %%a in (*.*) do (
  6.         set "str=%%a"&set "n=!str:~,1!"
  7.         if !n! leq 5 (
  8.             move "%%a" 厂家
  9.         ) else (
  10.             move "%%a" 型号
  11.         )      
  12.     )
  13.     popd
  14. )
  15. pause
复制代码
这样应该可以了。
作者: SandraRusso    时间: 2015-2-7 18:42

回复 15# 慕夜蓝化


    对啊!而且有的照片不是1-1.JPG的样式,而是1.JPG或是没有命名直接是.JPG,所以还得麻烦您帮我把这个条件添加进去!再次感谢~
作者: 慕夜蓝化    时间: 2015-2-7 18:47

回复 18# SandraRusso

你试下17楼的行不行,我这里测试是通过的。
作者: SandraRusso    时间: 2015-2-7 18:54

回复 19# 慕夜蓝化

刚刚试了一下您给的代码,发现20-1,20-2等首位数字大于5的照片也被移动到厂家中去了,不过只有6-1照片在型号中,这个有点奇怪!
作者: 慕夜蓝化    时间: 2015-2-7 18:59

回复 20# SandraRusso

这不奇怪,那不是首位数字了,那是前两位数字,我知道该怎么办了,你等下。
作者: 慕夜蓝化    时间: 2015-2-7 19:23

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号" 2>nul
  4.     pushd "%%~fsi"
  5.     for %%a in (*.*) do (
  6.         for /f "delims=-" %%b in ("%%~nxa") do (
  7.         if %%b leq 5 (
  8.             move "%%a" 厂家
  9.         ) else (
  10.             move "%%a" 型号
  11.         ))      
  12.     )
  13.     popd
  14. )
  15. pause
复制代码
你试下。
作者: SandraRusso    时间: 2015-2-7 19:30

回复 9# pcl_test


    您看要是图片有命名成1.JPG的也要移动到厂家中去,怎么修改代码呢?
作者: pcl_test    时间: 2015-2-7 19:38

回复 15# SandraRusso
  1. @echo off
  2. set "filesdir=G:\H\"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. md "厂家\" "型号\"
  6. for /l %%a in (1,1,5) do (
  7. move %%a-*.* "厂家\"
  8. move %%a.* "厂家\"
  9. )
  10. move *.* "型号\"
  11. popd
  12. )
  13. pause
复制代码

作者: SandraRusso    时间: 2015-2-7 19:44

回复 22# 慕夜蓝化


    哈哈!完美解决了~太感谢您了!我刚刚接触这个,是个菜鸟!还请您多多指教呀!不知道您可不可以帮我把您这段代码每句的含义备注解释下?另外希望能加下您的QQ,以后好好向您学习!
作者: SandraRusso    时间: 2015-2-7 19:52

回复 16# pcl_test

哈哈!真是高手呀!长见识了,另外还想问您下,如果要建立3个文件夹,然后把首位数字为1到5、6-10、11-之后的图片分别移动到3个文件夹内,您能在给做下指导吗?
作者: pcl_test    时间: 2015-2-7 20:02

回复 17# SandraRusso
  1. @echo off
  2. set "filesdir=G:\H\"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. md "1-5\" "6-10\" "其他\" 2>nul
  6. for /l %%a in (1,1,5) do (
  7. move %%a-*.* "1-5\"
  8. move %%a.* "1-5\"
  9. )
  10. for /l %%a in (6,1,10) do (
  11. move %%a-*.* "6-10\"
  12. move %%a.* "6-10\"
  13. )
  14. move *.* "其他\"
  15. popd
  16. )
  17. pause
复制代码

作者: SandraRusso    时间: 2015-2-7 20:09

回复 18# pcl_test


    厉害呀!以后有类似的我就知道怎么变换的运用了! 这个2>nul语句的含义是啥意思啊?对了如果问题解决了,我应该怎么在主题上标注已解决呢?我刚找了半天没找到,还请您见谅!
作者: pcl_test    时间: 2015-2-7 20:17

回复 19# SandraRusso

2>nul表示如果有错误不提示

你点击你问题1楼的“编辑”,直接在标题最前面输入[已解决],再点击“编辑帖子”即可
作者: SandraRusso    时间: 2015-2-7 20:19

回复 22# 慕夜蓝化


    真是高手呀!长见识了,另外还想问您下,如果要建立3个文件夹,然后把首位数字为1到5、6-10、11-之后的图片分别移动到3个文件夹内,您能在给做下指导吗?
作者: SandraRusso    时间: 2015-2-7 20:23

回复 20# pcl_test


    [已解决]按照您的指示搞定啦!非常感谢您!不过我现在还是没加到您的Q群里面呢?
作者: 慕夜蓝化    时间: 2015-2-7 21:45

请在帖子标题前标记[已解决]。
然后就是,在批处理之家的公告上是有官方qq群的;43011867;
一般大家都在那里聊天,有兴趣的话可以加入。
作者: SandraRusso    时间: 2015-2-11 12:37

回复 42# pcl_test


    高手!我还得追加请教你上次的一个问题,之前已经把对应照片都归属到对应的厂家和型号文件夹去了,但是只想保留厂家文件夹,
想把型号文件夹全部删除,你看看要怎么继续完善下代码呢?再次感谢啊!
作者: SandraRusso    时间: 2015-2-11 12:40

回复 47# 慕夜蓝化


    高手!我还得追加请教你上次的一个问题,之前已经把对应照片都归属到对应的厂家和型号文件夹去了,但是只想保留厂家文件夹,想把型号文件夹全部删除,你看看要怎么继续完善下代码呢?再次感谢啊!
作者: 慕夜蓝化    时间: 2015-2-11 15:03

  1. @echo off
  2. for /d %%i in (g:\h\*) do (
  3.     pushd "%%i"
  4.     for /d %%a in (*) do if "%%a"=="型号" rd /s/q "%%a"
  5.     popd
  6. )
  7. pause
复制代码
先测试下。
作者: SandraRusso    时间: 2015-2-11 15:26

回复 50# 慕夜蓝化


    好的!麻烦你再帮我看看这代码为什么提示不是内部或外部命令,也不是可运行的程序或批处理呢?和系统变量有关系吗?
@echo off
set "filesdir=F:\W\"
for /f %%i in ('dir /ad /b "%filesdir%"') do (
pushd "%filesdir%%%i"
md "厂家\" "型号\"
for /l %%a in (2,1,4) do (
move %%a-*.* "厂家\"
move %%a.* "厂家\"
)
move *.* "型号\"
popd
)
pause
作者: 慕夜蓝化    时间: 2015-2-11 15:53

回复 51# SandraRusso

你在move 和 md 命令的后面添加 >nul 2>nul 试试
并在for /f 后添加 "delims="
作者: SandraRusso    时间: 2015-2-11 16:33

回复 52# 慕夜蓝化


    刚才你给的那个删除命令完美通过测试!这个代码你能帮我修改下发上来吗?刚接触这个不太知道该在哪里加上代码,辛苦了!
作者: SandraRusso    时间: 2015-2-11 17:15

回复 52# 慕夜蓝化


    试了一下,还是不行呢!
作者: SandraRusso    时间: 2015-2-11 17:51

回复 39# pcl_test

麻烦你再帮我看看这代码改了下路径为什么提示不是内部或外部命令,也不是可运行的程序或批处理呢?和系统变量有关系吗?
@echo off
set "filesdir=F:\W\"
for /f %%i in ('dir /ad /b "%filesdir%"') do (
pushd "%filesdir%%%i"
md "厂家\" "型号\"
for /l %%a in (2,1,4) do (
move %%a-*.* "厂家\"
move %%a.* "厂家\"
)
move *.* "型号\"
popd
)
pause
作者: SandraRusso    时间: 2015-2-11 18:03

回复 52# 慕夜蓝化


    是不是我的系统变量有问题,因为我在保存到桌面文件的时候有时会找不到文件,后来看了以后才发现是在这个路径
所以估计这个F路径是不是系统找不到呢,好像公司电脑装了两个系统(双系统),一个XP,一个W7,一般我是进W7系统的
作者: SandraRusso    时间: 2015-2-11 20:56

回复 52# 慕夜蓝化


    F盘下W文件夹内有1、2、3……等子文件夹,1、2、3子文件夹下又包含子文件夹,想把最底层子文件夹下的文件批量移动到上层文件夹并删除最底层文件夹,如何实现呢?
作者: hellozz    时间: 2017-9-17 22:46

回复 57# SandraRusso


    我发现很多问问题的都是不断的提问,总有解决不完的问题,难道不能提前考虑好最终想要的结果吗?看了很多最后都是没有回复了,还在问




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2