[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样取文件名中内容为文件夹名,并移动文件?

在这个图片,我现在需要一个批处理,放在“座套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前后都是有"-"的,所以都一样,都是在第三个“-”与第四个“-”之间

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d *.dxf') do (
  3.     for /f "tokens=4 delims=-" %%j in ("%%i") do (
  4.         if not exist "%%~dpi%%j\" (
  5.             md "%%~dpi%%j"
  6.         )
  7.         move /y "%%i" "%%~dpi%%j"
  8.     )
  9. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    你好,执行一次是完美的,如果运行二次就是...\118\118\*.dxf了
执行三次就是...\118\118\118\*.dxf了

TOP

回复 3# 511182890
  1. @echo off
  2. for /d %%i in (*) do (
  3.     pushd "%%i"
  4.     for /d %%j in (*) do (
  5.         for %%k in (%%j\*.dxf) do (
  6.             for /f "tokens=4 delims=-" %%l in ("%%~nk") do (
  7.                 if not exist "%%j\%%l\" (
  8.                     md "%%j\%%l"
  9.                 )
  10.                 move /y "%%k" "%%j\%%l"
  11.             )
  12.         )
  13.     )
  14.     popd
  15. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


    在帮我优化一个程序
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2* delims=-" %%i in ('dir /a-d /b *.dxf') do (
  4. set "n=%%j"
  5. md "!n:~,5!\" 2>nul
  6. move "%%i-%%j-%%k" "!n:~,5!\"
  7. )
复制代码
这是之前的,我是放在”AA版“文件夹中的,取G1101字断作为文件夹名建的,现在我想让他放在“座套DXF”中。

TOP

本帖最后由 511182890 于 2015-5-28 12:38 编辑

回复 4# Batcher


    这个代码能不能只取数字,因为不单单是“-138-”,有些是“-136二边-”或者“-138后座破开-”有中文,也有像这样的“-33-”只有二位数的

TOP

回复 6# 511182890


    4楼代码你测试出什么问题了吗?请把测试用例发出来我试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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

TOP

回复 8# 511182890
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd "%%i"
  5.     for /d %%j in (*) do (
  6.         for %%k in (%%j\*.dxf) do (
  7.             for /f "tokens=4 delims=-" %%l in ("%%~nk") do (
  8.                 set NewFolder=%%l
  9.                 for /f "delims=0123456789" %%m in ("%%l") do (
  10.                     if "%%m" neq "" (
  11.                         set NewFolder=!NewFolder:%%m=!
  12.                     )
  13.                 )
  14.                 if not exist "%%j\!NewFolder!\" (
  15.                     md "%%j\!NewFolder!"
  16.                 )
  17.                 move /y "%%k" "%%j\!NewFolder!"
  18.             )
  19.         )
  20.     )
  21.     popd
  22. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 511182890 于 2015-5-28 14:25 编辑

回复 9# Batcher


    move 能不能移动所有子目录的文件啊

跟上面的图没关系,例
我要把:座套DXF\BB\.....DXF,我要把BB及子目录下的所有。DXF文件移动到座套DXF这个文件夹中。

TOP

跟上面的图没关系
例:
座套DXF\AA\...
我要把AA目录下的文件及子目录下的所有.DXF文件移动到座套DXF
怎么实现

TOP

回复 10# 511182890


    一个move命令无法实现
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# 511182890
  1. @echo off
  2. pushd "AA版"
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.dxf') do (
  4.     move /y "%%i" ..
  5. )
  6. popd
  7. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Batcher


    谢谢,完美执行

TOP

本帖最后由 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文件夹

TOP

返回列表