标题: [文件操作] [已解决]批处理移动子文件夹到指定目录 [打印本页]
作者: dujianchi 时间: 2009-7-24 23:42 标题: [已解决]批处理移动子文件夹到指定目录
如何使用DOS批量处理复制文件问题。
比如说我D盘 123文件里有N个文件夹
他们分别是:
d:/123/456/789/里面有数据
d:/123/BBB/CCC/里面有数据
d:/123/AAA/DDD/里面有数据
d:/123/999/45D/里面有数据
d:/123/D5F/F5DS/里面有数据
现在请问如何批量复制789 CCC DDD 45D F5DS 等文件夹及里面的数据,
并且删除了原来的文件名 保留数据和/123/下的文件名
返回上一级
结果路径是这样:
d:/123/456/里面有数据
d:/123/BBB/里面有数据
d:/123/AAA/里面有数据
d:/123/999/里面有数据
d:/123/D5F/里面有数据
紧急,求教了!~~~~~~
[ 本帖最后由 dujianchi 于 2009-7-25 15:58 编辑 ]
作者: dujianchi 时间: 2009-7-24 23:48
还有一个思路就是
复制或剪切 d:/123/目录下所有.jpg .gif .rar .exe .ai .psd等(有后缀的文件)
返回上一级路径。。
这样也可以
例如d:/123/567/789/aaa.jpg
命令后就变 d:/123/567/aaa.jpg
作者: dujianchi 时间: 2009-7-25 10:58
有人帮助一下吗?有人帮助一下吗?
作者: dujianchi 时间: 2009-7-25 14:40
数据格式大部分都是 jpg gif ai eps cdr psd
并且路径都是中文的
作者: keen 时间: 2009-7-25 15:44
因为你没有给出你的真实环境的情况,我就你的例子中d:\123目录为例:- @echo off&setlocal enabledelayedexpansion
- cd /d d:\123
- for /r d:\123 %%i in (*) do (
- set str=%%~si
- for /f "tokens=3 delims=\" %%a in ("%%~pi") do (
- set var=!str:%%a\=!
- set lj=%%~sa
- )
- echo move !str! !var!&& echo rd !lj! 2>nul
- )
- pause
复制代码
请根据你的实际环境,修改相应内容.
实际应用请把代码中的move和rd前面的echo 去掉.
作者: dujianchi 时间: 2009-7-25 15:53
- @echo off&setlocal enabledelayedexpansion
- cd /d h:\123
- for /r h:\123 %%i in (*) do (
- set str=%%~si
- for /f "tokens=3 delims=\" %%a in ("%%~pi") do (
- set var=!str:%%a\=!
- set lj=%%~sa
- )
- move !str! !var!&& rd !lj! 2>nul
- )
- pause
复制代码
我只改了H盘 测试不成功,
作者: dujianchi 时间: 2009-7-25 15:59
测试可以了,只能深入2级子目录
好象不支持中文耶
谢谢!
[ 本帖最后由 dujianchi 于 2009-7-25 16:08 编辑 ]
作者: keen 时间: 2009-7-25 16:07 标题: 回复 7楼 的帖子
匆忙中给出的代码,删除可能有问题.
中文应该支持呀.
要想深入的更深的目录,只需改动tokens后面的值就可以了.
作者: dujianchi 时间: 2009-7-25 16:13
测试 有时可以,有时不可以,好象文件名的问题,
作者: dujianchi 时间: 2009-7-25 16:19
天啊,一个BAT把我整个硬盘都复制来了,文件乱了,
我花费3个月的成果自然也没有了。。。。。BAT放在哪,他就剪切过来身边。。
作者: keen 时间: 2009-7-25 16:28 标题: 回复 10楼 的帖子
不会吧,我给说过,实际应用要看你的环境进行改变相应的值,这个主要是路径的问题.
作者: dujianchi 时间: 2009-7-25 17:11
整理好了,,幸亏不是删除命令。。。。
作者: dujianchi 时间: 2009-7-25 17:11
- @echo off&setlocal enabledelayedexpansion
- cd /d J:\111\
- for /r J:\111\ %%i in (*) do (
- set str=%%~si
- for /f "tokens=3 delims=\" %%a in ("%%~pi") do (
- set var=!str:%%a\=!
- set lj=%%~sa
- )
- move !str! !var!&& rd !lj! 2>nul
- )
- pause
复制代码
我拿U盘测试。。。现在不会乱剪切了吧!~~
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |