标题: [文件操作] [已解决]批处理怎样取文件名中内容为文件夹名,并移动文件? [打印本页]
作者: 511182890 时间: 2015-5-28 08:54 标题: [已解决]批处理怎样取文件名中内容为文件夹名,并移动文件?
在这个图片,我现在需要一个批处理,放在“座套DXF”这个文件夹下,我有AA BB CC文件夹好多个,再子文件夹G1101 G1201又是好多个,我要执行的是最里面的文件AD103C-G1101-AA-118-主副背料-四向-769.dxf再取成“AA版\G1101\118\AD103C-G1101-AA-118-主副背料-四向-769.dxf”
这个118是一个数字,从”10-999“反正就是二位与三位数,118前后都是有"-"的,所以都一样,都是在第三个“-”与第四个“-”之间
作者: Batcher 时间: 2015-5-28 10:35
- @echo off
- for /f "delims=" %%i in ('dir /b /s /a-d *.dxf') do (
- for /f "tokens=4 delims=-" %%j in ("%%i") do (
- if not exist "%%~dpi%%j\" (
- md "%%~dpi%%j"
- )
- move /y "%%i" "%%~dpi%%j"
- )
- )
复制代码
作者: 511182890 时间: 2015-5-28 10:48
回复 2# Batcher
你好,执行一次是完美的,如果运行二次就是...\118\118\*.dxf了
执行三次就是...\118\118\118\*.dxf了
作者: Batcher 时间: 2015-5-28 11:59
回复 3# 511182890 - @echo off
- for /d %%i in (*) do (
- pushd "%%i"
- for /d %%j in (*) do (
- for %%k in (%%j\*.dxf) do (
- for /f "tokens=4 delims=-" %%l in ("%%~nk") do (
- if not exist "%%j\%%l\" (
- md "%%j\%%l"
- )
- move /y "%%k" "%%j\%%l"
- )
- )
- )
- popd
- )
复制代码
作者: 511182890 时间: 2015-5-28 12:26
回复 4# Batcher
在帮我优化一个程序- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2* delims=-" %%i in ('dir /a-d /b *.dxf') do (
- set "n=%%j"
- md "!n:~,5!\" 2>nul
- move "%%i-%%j-%%k" "!n:~,5!\"
- )
复制代码
这是之前的,我是放在”AA版“文件夹中的,取G1101字断作为文件夹名建的,现在我想让他放在“座套DXF”中。
作者: 511182890 时间: 2015-5-28 12:35
本帖最后由 511182890 于 2015-5-28 12:38 编辑
回复 4# Batcher
这个代码能不能只取数字,因为不单单是“-138-”,有些是“-136二边-”或者“-138后座破开-”有中文,也有像这样的“-33-”只有二位数的
作者: Batcher 时间: 2015-5-28 13:01
回复 6# 511182890
4楼代码你测试出什么问题了吗?请把测试用例发出来我试试
作者: 511182890 时间: 2015-5-28 13:19
回复 7# Batcher
如果我的文件:
AD103C-G1101-AA-118二边-主副背料-四向-769.dxf
AD103C-G1101-AA-118二边三边-主副背料-四向-769.dxf
执行是:
118二边\AD103C-G1101-AA-118二边-主副背料-四向-769.dxf
118二边三边\AD103C-G1101-AA-118二边三边-主副背料-四向-769.dxf
作者: Batcher 时间: 2015-5-28 14:13
回复 8# 511182890 - @echo off
- setlocal enabledelayedexpansion
- for /d %%i in (*) do (
- pushd "%%i"
- for /d %%j in (*) do (
- for %%k in (%%j\*.dxf) do (
- for /f "tokens=4 delims=-" %%l in ("%%~nk") do (
- set NewFolder=%%l
- for /f "delims=0123456789" %%m in ("%%l") do (
- if "%%m" neq "" (
- set NewFolder=!NewFolder:%%m=!
- )
- )
- if not exist "%%j\!NewFolder!\" (
- md "%%j\!NewFolder!"
- )
- move /y "%%k" "%%j\!NewFolder!"
- )
- )
- )
- popd
- )
复制代码
作者: 511182890 时间: 2015-5-28 14:20
本帖最后由 511182890 于 2015-5-28 14:25 编辑
回复 9# Batcher
move 能不能移动所有子目录的文件啊
跟上面的图没关系,例
我要把:座套DXF\BB\.....DXF,我要把BB及子目录下的所有。DXF文件移动到座套DXF这个文件夹中。
作者: 511182890 时间: 2015-5-28 14:23
跟上面的图没关系
例:
座套DXF\AA\...
我要把AA目录下的文件及子目录下的所有.DXF文件移动到座套DXF
怎么实现
作者: Batcher 时间: 2015-5-28 15:59
回复 10# 511182890
一个move命令无法实现
作者: Batcher 时间: 2015-5-28 15:59
回复 11# 511182890 - @echo off
- pushd "AA版"
- for /f "delims=" %%i in ('dir /b /s /a-d *.dxf') do (
- move /y "%%i" ..
- )
- popd
- pause
复制代码
作者: 511182890 时间: 2015-5-28 16:32
回复 13# Batcher
谢谢,完美执行
作者: 511182890 时间: 2015-6-2 17:18
本帖最后由 511182890 于 2015-6-2 17:20 编辑
回复 13# Batcher
新问题只取第一个字母作为文件夹
目录文件:座套DXF\AA\G1201\136\FT2032-G1202-KC五位-146-副背料-倒顺-551.dxf
我要把批处理放在“座套DXF”下,执行一下得结果为座套DXF\AA\G1201\136\F\FT2032-G1202-KC五位-146-副背料-倒顺-551.dxf
我要把批处理放在“AA”下,执行一下得结果为座套DXF\AA\G1201\136\F\FT2032-G1202-KC五位-146-副背料-倒顺-551.dxf
要二个程序。且多次执行不重复创建F文件夹
作者: 511182890 时间: 2015-6-26 14:13
回复 2# Batcher
http://www.bathome.net/thread-36257-1-1.html
帮忙看看
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |