Board logo

标题: [文本处理] [已解决]批处理如何实现文件名更改? [打印本页]

作者: 511182890    时间: 2015-4-29 16:21     标题: [已解决]批处理如何实现文件名更改?

本帖最后由 511182890 于 2015-5-5 08:10 编辑

需要更改文件名,有50W个文件,我有文件名修改器,麻烦大神写个BAT。
例:
AA2065-G1101-AA-133主副背料(6米48)倒顺.dxf
BBB2065-G1101-AA五位-145主料(6米48)双向.dxf
AA2065-G1101-AA五四位-136副背料(6米48)四向.dxf
执行后结果:
AA2065-G1101-AA-133-主副背料-倒顺-6.48.dxf
BBB2065-G1101-AA五位-145-主料-双向-6.48.dxf
AA2065-G1101-AA五四位-136-副背料-四向-6.48.dxf

文件名:要求
1、最后二个字就只有“倒顺,双向,四向”要把它移到“()”前面
2、“(”更改为“-”,“米”改“.”
3、数字133,145,136后面需要加个“-”
4、什么料有这些料:主料,副料,背料,主副料,副背料


帮助程序写全,我直接保存执行就行的那种!
作者: Batcher    时间: 2015-4-29 17:54

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
  4.     set "a=%%i"
  5.     set "a=!a:主副料=-主副料!"
  6.     set "a=!a:副背料=-副背料!"
  7.     set "a=!a:主料=-主料!"
  8.     set "a=!a:副料=-副料!"
  9.     set "b=%%j"
  10.     set "b=!b:米=.!"
  11.     set "c=%%k"
  12.     set "c=!c:~0,2!"
  13.     ren "%%i(%%j)%%k" "!a!-!c!-!b!"
  14. )
  15. pause
复制代码

作者: 511182890    时间: 2015-4-30 09:56

回复 2# Batcher


    我的材料有:5个:主料,副料,背料,主副料,副背料
还有运行之后。DXF没有了,麻烦大神再帮忙修改一下
作者: 511182890    时间: 2015-4-30 10:06

本帖最后由 511182890 于 2015-4-30 10:10 编辑

回复 3# 511182890


    例:这是我所有的文件命名了。
AA2065-G1101-AA-133主副背料(6米48)倒顺.dxf
BB2065-G1101-AA-136副背料(6米48)四向.dxf
CCC2065-G1101-AA-145主料(6米48)双向.dxf
DD2065-G1101-AA五位-136副料(6米48)四向.dxf
FFF2065-G1101-AA五四位-136背料(6米48)四向.dxf
执行后结果:
AA2065-G1101-AA-133-主副背料-倒顺-6.48.dxf
BB2065-G1101-AA-136-副背料-四向-6.48.dxf
CCC2065-G1101-AA-145-主料-双向-6.48.dxf
DD2065-G1101-AA五位-136-副料-四向-6.48.dxf
FFF2065-G1101-AA五四位-136-背料-四向-6.48.dxf

文件名:要求
1、最后二个字就只有“倒顺,双向,四向”要把它移到“()”前面
2、“(”更改为“-”,“米”改“.”
3、数字133,145,136后面需要加个“-”
4、什么料有这些料:主料,副料,背料,主副料,副背料

如果什么料不好实现的话,结果这样也没有关系
AA2065-G1101-AA-133主副背料-倒顺-6.48.dxf
BB2065-G1101-AA-136副背料-四向-6.48.dxf
CCC2065-G1101-AA-145主料-双向-6.48.dxf
DD2065-G1101-AA五位-136副料-四向-6.48.dxf
FFF2065-G1101-AA五四位-136背料-四向-6.48.dxf
作者: Batcher    时间: 2015-4-30 10:10

回复 4# 511182890


AA2065-G1101-AA-133主副背料(6米48)倒顺.dxf
你提到的五种材料里面没有“主副背料”,请确定一下有还是没有。
作者: 511182890    时间: 2015-4-30 10:25

回复 5# Batcher


确定有主副背料   
有主副背料没有主副料
作者: 511182890    时间: 2015-4-30 10:46

AA2065-G1101-AA-133-主-副-背料-倒顺-6.48
BB2065-G1101-AA-136-副-背料-四向-6.48
CCC2065-G1101-AA-145-主料-双向-6.48
DD2065-G1101-AA五位-136-副料-四向-6.48
FFF2065-G1101-AA五四位-136-背料-四向-6.48
这是我用你的代码运行之后的结果,其实帮我。DXF加进去,就好了,因为“主-副-背料”,“副-背料”我只要用文件名修改器改一次就好了
还有一个要求就是该目录下面所有子文件夹里的文件
作者: Batcher    时间: 2015-4-30 13:49

回复 7# 511182890
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
  4.     set "a=%%i"
  5.     if "!a:主副背料=-主副背料!" neq "%%i" (
  6.         set "a=!a:主副背料=-主副背料!"
  7.     ) else if "!a:副背料=-副背料!" neq "%%i" (
  8.         set "a=!a:副背料=-副背料!"
  9.     ) else (
  10.         set "a=!a:主料=-主料!"
  11.         set "a=!a:副料=-副料!"
  12.         set "a=!a:背料=-背料!"
  13.     )
  14.     set "b=%%j"
  15.     set "b=!b:米=.!"
  16.     set "c=%%k"
  17.     set "d=!c:~3!"
  18.     set "c=!c:~0,2!"
  19.     ren "%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
  20. )
  21. pause
复制代码
先测试基本功能,子文件夹的事情稍后再说。
作者: 511182890    时间: 2015-4-30 13:57

回复 8# Batcher


    非常感觉,完美执行。就是能不能在子目录下面也运行。
作者: sinsky    时间: 2015-4-30 15:18

用灵格吧。。
作者: 511182890    时间: 2015-4-30 15:53

回复 10# sinsky


    灵格是什么,软件?
作者: 511182890    时间: 2015-4-30 16:12     标题: 在各个子目录下运行这个批处理品

本帖最后由 511182890 于 2015-4-30 16:18 编辑

有个一个批处理命名a.bat
我想让他在D盘的每个文件夹下执行这个批处理。D盘下包括所有子目录有1000个文件夹!
我没有在每个文件夹下放入这个BAT。
这个怎么操作。

a.bat是这个内容:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
  4.     set "a=%%i"
  5.     if "!a:主副背料=-主副背料!" neq "%%i" (
  6.         set "a=!a:主副背料=-主副背料!"
  7.     ) else if "!a:副背料=-副背料!" neq "%%i" (
  8.         set "a=!a:副背料=-副背料!"
  9.     ) else (
  10.         set "a=!a:主料=-主料!"
  11.         set "a=!a:副料=-副料!"
  12.         set "a=!a:背料=-背料!"
  13.     )
  14.     set "b=%%j"
  15.     set "b=!b:米=.!"
  16.     set "c=%%k"
  17.     set "d=!c:~3!"
  18.     set "c=!c:~0,2!"
  19.     ren "%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
  20. )
  21. pause
复制代码

作者: apang    时间: 2015-4-30 16:38

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /s /a-d *.dxf') do (
  4.     for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
  5.         set "a=%%i"
  6.         if "!a:主副背料=-主副背料!" neq "%%i" (
  7.             set "a=!a:主副背料=-主副背料!"
  8.         ) else if "!a:副背料=-副背料!" neq "%%i" (
  9.             set "a=!a:副背料=-副背料!"
  10.         ) else (
  11.             set "a=!a:主料=-主料!"
  12.             set "a=!a:副料=-副料!"
  13.             set "a=!a:背料=-背料!"
  14.         )
  15.         set "b=%%j"
  16.         set "b=!b:米=.!"
  17.         set "c=%%k"
  18.         set "d=!c:~3!"
  19.         set "c=!c:~0,2!"
  20.         ren "%%~dpa%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
  21.     )
  22. )
  23. pause
复制代码

作者: 511182890    时间: 2015-4-30 17:04

回复 2# apang


    谢谢,完美执行
作者: Batcher    时间: 2015-4-30 17:54

回复 9# 511182890
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /s /a-d *.dxf') do (
  4.     for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
  5.         set "a=%%i"
  6.         if "!a:主副背料=-主副背料!" neq "%%i" (
  7.             set "a=!a:主副背料=-主副背料!"
  8.         ) else if "!a:副背料=-副背料!" neq "%%i" (
  9.             set "a=!a:副背料=-副背料!"
  10.         ) else (
  11.             set "a=!a:主料=-主料!"
  12.             set "a=!a:副料=-副料!"
  13.             set "a=!a:背料=-背料!"
  14.         )
  15.         set "b=%%j"
  16.         set "b=!b:米=.!"
  17.         set "c=%%k"
  18.         set "d=!c:~3!"
  19.         set "c=!c:~0,2!"
  20.         ren "%%a" "!a!-!c!-!b!.!d!"
  21.     )
  22. )
  23. pause
复制代码

作者: sinsky    时间: 2015-4-30 23:52

回复 11# 511182890


    一个可以处理多级子目录文件,改名 替换,正则,全部都可以,试试就知道。你值得拥有。。。

我说下另外一个问题。。。

好奇怪 为毛要限制一个小时只能回复10个。。。。  刚编辑好的内容全丢了。。。


你看我回你个贴容易么。。。 大半夜又来了。。。
作者: bailong360    时间: 2015-5-1 00:16

  1. @ren2 -f -r "(.*)-(.*)-(.*)-([0-9]+)(.*?)\(([0-9]+).*?([0-9]+)\)(.*)\.dxf" "$1-$2-$3-$4-$5-$8-$6.$7.dxf" >nul
复制代码
凑个热闹
需要第三方工具ren2.exe支持,下载后与批处理放在同一目录下执行
http://batch-cn.qiniudn.com/tool/ren2.exe
作者: sinsky    时间: 2015-5-1 00:25

回复 11# 511182890


    灵者更名,记错了
作者: 511182890    时间: 2015-5-4 09:00

本帖最后由 511182890 于 2015-5-4 09:05 编辑

回复 15# Batcher


    大神你的代码如果重复运行会把我的源文件改掉的,执行一次是成功的。上面有个人的成功了,执行多次不改名
作者: Batcher    时间: 2015-5-4 15:00

回复 19# 511182890
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /s /a-d *.dxf ^| findstr "米"') do (
  4.     for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
  5.         set "a=%%i"
  6.         if "!a:主副背料=-主副背料!" neq "%%i" (
  7.             set "a=!a:主副背料=-主副背料!"
  8.         ) else if "!a:副背料=-副背料!" neq "%%i" (
  9.             set "a=!a:副背料=-副背料!"
  10.         ) else (
  11.             set "a=!a:主料=-主料!"
  12.             set "a=!a:副料=-副料!"
  13.             set "a=!a:背料=-背料!"
  14.         )
  15.         set "b=%%j"
  16.         set "b=!b:米=.!"
  17.         set "c=%%k"
  18.         set "d=!c:~3!"
  19.         set "c=!c:~0,2!"
  20.         ren "%%a" "!a!-!c!-!b!.!d!"
  21.     )
  22. )
  23. pause
复制代码

作者: 511182890    时间: 2015-5-28 09:38

回复 15# Batcher


    http://www.bathome.net/viewthread.php?tid=35870&extra=

帮我看看,大神
作者: 511182890    时间: 2015-6-27 10:17

回复 5# Batcher


    大神,来帮个忙http://www.bathome.net/thread-36257-1-1.html




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