Board logo

标题: [文件操作] [已解决]批处理如何移动指定目录下子目录下的文件夹? [打印本页]

作者: zhxixeng12    时间: 2010-10-8 18:27     标题: [已解决]批处理如何移动指定目录下子目录下的文件夹?

文件夹121
文件夹121\za...ka(很多个,名称不规则)
文件夹121\za...ka\za...ka(很多个,名称不规则)
文件夹121\za...ka\files(名称固定)
文件夹121\za...ka\0404(名称有规律,全部为数字组成,都是4位数)

如何将121\za...ka\za...ka批量移动到121\za...ka\files,且排除0404文件夹
另外,121\za...ka下,绝对只有一个0404和files,除了这两个文件夹外,其他的文件夹全部移动到121\za...ka\files下

移动后:
文件夹121
文件夹121\za...ka(很多个,名称不规则)
文件夹121\za...ka\files(名称固定)
文件夹121\za...ka\files\za...ka
文件夹121\za...ka\0404(名称有规律,全部为数字组成,都是4位数)

上述名称全部为文件夹
这个东西我完全没有头绪!!!!

国际惯例,谢谢先!

[ 本帖最后由 zhxixeng12 于 2010-10-11 09:22 编辑 ]
作者: Batcher    时间: 2010-10-8 20:13

到文件夹121里面运行一下tree /f,结果贴出来看看。
作者: zhxixeng12    时间: 2010-10-8 21:49

原帖由 Batcher 于 2010-10-8 20:13 发表
到文件夹121里面运行一下tree /f,结果贴出来看看。
文件夹 PATH 列表
下面只是一小部分,不过目录结构是一样的。0409(这个不固定,不过都是数字)、files(固定名)、S000....S003...是文件,没有扩展名


卷序列号为 00000200 0008B7D
C:.
├─Menu_Enhancement_1_1_20113129_00
│  ├─0409
│  │  └─files
│  ├─CUIHandler.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  └─files
├─Message_Enhancement_1_2_20133425_00
│  ├─0409
│  │  └─files
│  ├─files
│  └─HTCMsgEnhanceDLL.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
├─Phone_Canvas_Enhancement_2G_4_2_62120113626_0
│  ├─0409
│  │  └─files
│  ├─ddcall.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  ├─DPadMenu.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  ├─files
│  ├─phcanhtc.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  ├─phcanrc.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  ├─PhoneAdvanced.dll
│  │      S000
│  │      S001
│  │      S002
│  │      S003
│  │      S004
│  │      S005
│  │      
│  └─smartdialuiext.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
├─Resource_Proxy_1_0_19221324_01
│  ├─files
│  └─ResLoader.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
├─Ringtone_Plugin_1_0_19221426_00
│  ├─0409
│  └─RTPlugInEx3.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
├─RSSHub_2_1_2_1109_01
│  ├─0409
│  │  └─files
│  └─files
└─Volume_Control_2_2_20121229_00
    ├─0409
    │  └─files
    ├─files
    └─HTCVolumeControl.dll
            S000
            S001
            S002
            S003
            S004
            S005
作者: Batcher    时间: 2010-10-8 22:15     标题: 回复 3楼 的帖子

怎么移动?
作者: zhxixeng12    时间: 2010-10-8 22:23

以为例:
移动Menu_Enhancement_1_1_20113129_00\CUIHandler.dll到Menu_Enhancement_1_1_20113129_00\files,如果还有Menu_Enhancement_1_1_20113129_00\***.***文件夹也一并移
0409及下面的子文件都动
作者: Batcher    时间: 2010-10-8 22:59

看不懂你的描述,移动之后希望变成什么样子?
作者: zhxixeng12    时间: 2010-10-8 23:37

移动前:
文件夹 PATH 列表
卷序列号为 00000002 0008B7D
C:\USERS\JIOO\DESKTOP\EXT
├─Message_Enhancement_1_2_20133425_00
│  ├─0409
│  │  └─files
│  ├─files
│  └─HTCMsgEnhanceDLL.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
└─Phone_Canvas_Enhancement_2G_4_2_62120113626_0
    ├─0804
    │  └─files
    ├─ddcall.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─DPadMenu.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─files
    ├─phcanhtc.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─phcanrc.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─PhoneAdvanced.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    └─smartdialuiext.dll
            S000
            S001
            S002
            S003
            S004
            S005
            
移动后:
文件夹 PATH 列表
卷序列号为 00000002 0008:DB7D
C:\USERS\JIOO\DESKTOP\EXT
├─Message_Enhancement_1_2_20133425_00
│  ├─0409
│  │  └─files
│  ├─files
│  └─HTCMsgEnhanceDLL.dll
│          S000
│          S001
│          S002
│          S003
│          S004
│          S005
│         
└─Phone_Canvas_Enhancement_2G_4_2_62120113626_0
    ├─0804
    │  └─files
    ├─ddcall.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─DPadMenu.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─files
    ├─phcanhtc.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─phcanrc.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    ├─PhoneAdvanced.dll
    │      S000
    │      S001
    │      S002
    │      S003
    │      S004
    │      S005
    │      
    └─smartdialuiext.dll
            S000
            S001
            S002
            S003
            S004
            S005

[ 本帖最后由 zhxixeng12 于 2010-10-10 21:02 编辑 ]
作者: zhxixeng12    时间: 2010-10-8 23:37

原帖由 Batcher 于 2010-10-8 22:59 发表
看不懂你的描述,移动之后希望变成什么样子?
我传了txt附件,麻烦您帮看看!
作者: cjiabing    时间: 2010-10-9 00:13

路过,谁有酱油卖啊!~
应该不是很难,但你要把问题描述清楚。怎么描述法?
你自己观察,你需要把哪些文件转移到哪里去?
这些文件有什么共同的地方?有什么不同的地方?是转移所有还是转移部分?
如果转移的是部分文件,那么这些文件有什么特征或规律?
你把问题描述清楚了,代码三分钟写好给你!~
作者: zhxixeng12    时间: 2010-10-9 00:27

原帖由 cjiabing 于 2010-10-9 00:13 发表
路过,谁有酱油卖啊!~
应该不是很难,但你要把问题描述清楚。怎么描述法?
你自己观察,你需要把哪些文件转移到哪里去?
这些文件有什么共同的地方?有什么不同的地方?是转移所有还是转移部分?
如果转移的是部 ...


需要转移的文件夹名称没有规律;有两个文件夹不需要转移,一个为4位的数字名称,另一个名称固定为files;所以文件不动,只动文件夹。

我也不太说得清楚,麻烦您看一下我上传的转移前后的目录结构就明白了!
作者: zhxixeng12    时间: 2010-10-9 00:36     标题: 回复 10楼 的帖子

我重新描述了一下,重新上传了目录结构。都在1楼,麻烦您看一看!
作者: cjiabing    时间: 2010-10-9 00:54

晕,我看了附件,对比了移动前后——不懂看哪个目录树——你的意思是不是“同一目录下,除了0409(随机四位数)和files这两个文件夹,把其它文件全部复制到该目录下的files文件夹中?”
作者: zhxixeng12    时间: 2010-10-9 01:00     标题: 回复 12楼 的帖子

对,不过不是复制文件,而是移动文件夹,那个带扩展名的是文件夹
作者: zhxixeng12    时间: 2010-10-9 01:02     标题: 回复 12楼 的帖子

干脆这样,只搜索以.dll结尾的文件夹,然后移动到files
作者: zhxixeng12    时间: 2010-10-9 01:04     标题: 回复 12楼 的帖子

我写了个这样的:
  1. cd OEM1\IME_CHS_2_1_20132025_00
  2. for /f %%i in ('dir /ad /b *.dll') do move %%i files>nul&echo 已移动: %%i
复制代码
问题就是只能对IME_CHS_2_1_20132025_00操作,我还有很多和IME_CHS_2_1_20132025_00同级的文件夹要操作。
  1. for /f %%i in ('dir /ad /b *.dll') do move %%i files>nul&echo 已移动: %%i
复制代码
前面应该如何写,才能操作OEM1下的每一个文件夹呢?
作者: cjiabing    时间: 2010-10-9 01:06

晕掉,你提供的例子都不统一:
一楼说的是  121\za...ka\za...ka
三楼说的是  Menu_Enhancement_1_1_20113129_00
七楼移动前后没什么变化。
问题还是没描述清楚,代码先不写,免得写了半天你说不是!~
再看一下吧,想清楚你要表达什么再打字,把问题在一楼描述清楚,描述不清楚你就回小学深造一下!~
作者: zhxixeng12    时间: 2010-10-9 01:11     标题: 回复 16楼 的帖子

呃!!!
Menu_Enhancement_1_1_20113129_00是实际中的。
一楼的附件应该很明白。移动前与移动后的差别!
作者: zhxixeng12    时间: 2010-10-9 01:19     标题: 回复 16楼 的帖子

图片附件来了

红筐内的文件夹全部移动到files。

[ 本帖最后由 zhxixeng12 于 2010-10-10 21:01 编辑 ]
作者: cjiabing    时间: 2010-10-9 01:25

你那个files是指哪一个?
作者: zhxixeng12    时间: 2010-10-9 01:30     标题: 回复 19楼 的帖子

IME_CHS_2_1_20132025_00下的*.dll文件夹移动到IME_CHS_2_1_20132025_00\files
Notification_Enhancement_3_0_2011_3028下的*.dll文件夹移动到Notification_Enhancement_3_0_2011_3028\files
作者: zhxixeng12    时间: 2010-10-9 01:33     标题: 回复 19楼 的帖子

可以QQ吗?这个问题我烦恼很久很就了!!!
作者: cjiabing    时间: 2010-10-9 01:34

  1. @echo off
  2. for /d %%x in (*) do cd /d %%x&&for /d %%a in (*) do if /i not "%%a"=="files"  if /i not "%%a"=="0804"  &&for /f %%i in ('dir /ad /b *.dll') do move %%i files>nul&echo 已移动: %%i
  3. pause
复制代码
算了,看你弄得那么辛苦,你试试看,最好把move改成echo试下,否则出错了不好弄。
作者: zhxixeng12    时间: 2010-10-9 01:41     标题: 回复 22楼 的帖子

只能处理IME_CHS_2_1_20132025_00
IME_CHS_2_1_20132025_00处理完成后就提示系统找不到系统找不到指定的路径
作者: zhxixeng12    时间: 2010-10-9 01:41

  1. @echo off
  2. cd OEM1
  3. for /d %%a in (*) do if /i not "%%a"=="files" if /i not "%%a"=="0804" cd %%a&&for /f %%i in ('dir /ad /b *.dll') do move %%i files>nul&echo 已移动: %%i
  4. pause
复制代码

作者: zhxixeng12    时间: 2010-10-9 01:42

我的批处理和OEM1处同一目录

出错了也没事,OEM1是专门测试的

[ 本帖最后由 zhxixeng12 于 2010-10-9 01:45 编辑 ]
作者: cjiabing    时间: 2010-10-9 02:02

  1. @echo off
  2. for /d %%x in (*) do cd /d "%cd%\%%x"&&for /d %%a in (*) do if /i not "%%a"=="files"  if /i not "%%a"=="0804"  if exist "files" move "%%a" "files">nul&echo 已移动: %%a&if exist "files" move "*.dll" "files">nul&echo 已移动: *.dll
  3. pause
复制代码
被你的命令误导了,这个是移动文件夹的,稍等给你弄移动文件的,所有文件还是只dll文件?
——————————————————
OK,在我这里测试通过,你把程序放在Menu_Enhancement_1_1_20113129_00这一级外面即可。

[ 本帖最后由 cjiabing 于 2010-10-9 02:07 编辑 ]
作者: zhxixeng12    时间: 2010-10-9 02:06     标题: 回复 26楼 的帖子

能所有最好,不能就只移动以.dll结尾的文件夹
作者: cjiabing    时间: 2010-10-9 02:08

可能会提示重复、目录不存在之类的,好像没这回事——我这里是这样的
作者: zhxixeng12    时间: 2010-10-9 02:09     标题: 回复 26楼 的帖子

就是这个命令,成了:
  1. @echo off
  2. cd OEM1
  3. for /d %%x in (*) do cd /d "%cd%\%%x"&&for /d %%a in (*) do if /i not "%%a"=="files" if /i not "%%a"=="0804" if exist "files" move "%%a" "files"&echo 已移动: %%i
  4. pause
复制代码

作者: zhxixeng12    时间: 2010-10-9 02:10     标题: 回复 28楼 的帖子

太厉害了,这个我完全看不明白。

只看明白了排除files和0804.
作者: zhxixeng12    时间: 2010-10-9 02:12     标题: 回复 28楼 的帖子

又有问题了,如果我需要排除的是files和0404或0409....呢?
作者: cjiabing    时间: 2010-10-9 02:13     标题: 回复 30楼 的帖子

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%x in (*) do if exist "%cd%\%%x" cd /d "%cd%\%%x"&&if exist "files" move "*.dll" "files">nul&echo 已移动: *.dll&for /d %%a in (*) do if /i not "%%a"=="files" echo %%a|findstr /be "[0-9][0-9][0-9][0-9]"||if exist "%%a" if exist "files" move "%%a" "files">nul&echo 已移动: %%a
  3. pause
复制代码
这回完美了,睡觉!~

[ 本帖最后由 cjiabing 于 2010-10-9 03:02 编辑 ]
作者: zhxixeng12    时间: 2010-10-9 05:00     标题: 回复 29楼 的帖子

麻烦您再帮一下!

我想要一个只移动*.*的文件夹,*.*就是需要移动的文件夹的规则,中间必有一个点

谢谢!
作者: Batcher    时间: 2010-10-9 19:30     标题: 回复 33楼 的帖子

能不能把要求一次全部说完?
作者: powerbat    时间: 2010-10-9 19:38

这帖可以加“精”了。脑残问题。。。
作者: cjiabing    时间: 2010-10-9 20:12

LZ语文表达能力太差了,一个简单的问题说得那么复杂,还发了那么多附件,超郁闷!~喜欢大大们说的:把复杂的问题简单化。
LZ先生,按12楼概括的在一楼把问题重新描述一下,顺便把你的附件都删除了,否则版主看见了就想抽你!~




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