标题: [文本处理] [已解决]批处理如何实现文件名更改? [打印本页]
作者: 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
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
- set "a=%%i"
- set "a=!a:主副料=-主副料!"
- set "a=!a:副背料=-副背料!"
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "c=!c:~0,2!"
- ren "%%i(%%j)%%k" "!a!-!c!-!b!"
- )
- 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 - @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
- set "a=%%i"
- if "!a:主副背料=-主副背料!" neq "%%i" (
- set "a=!a:主副背料=-主副背料!"
- ) else if "!a:副背料=-副背料!" neq "%%i" (
- set "a=!a:副背料=-副背料!"
- ) else (
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "a=!a:背料=-背料!"
- )
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "d=!c:~3!"
- set "c=!c:~0,2!"
- ren "%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
- )
- 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是这个内容:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=()" %%i in ('dir /b /a-d *.dxf') do (
- set "a=%%i"
- if "!a:主副背料=-主副背料!" neq "%%i" (
- set "a=!a:主副背料=-主副背料!"
- ) else if "!a:副背料=-副背料!" neq "%%i" (
- set "a=!a:副背料=-副背料!"
- ) else (
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "a=!a:背料=-背料!"
- )
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "d=!c:~3!"
- set "c=!c:~0,2!"
- ren "%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
- )
- pause
复制代码
作者: apang 时间: 2015-4-30 16:38
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /s /a-d *.dxf') do (
- for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
- set "a=%%i"
- if "!a:主副背料=-主副背料!" neq "%%i" (
- set "a=!a:主副背料=-主副背料!"
- ) else if "!a:副背料=-副背料!" neq "%%i" (
- set "a=!a:副背料=-副背料!"
- ) else (
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "a=!a:背料=-背料!"
- )
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "d=!c:~3!"
- set "c=!c:~0,2!"
- ren "%%~dpa%%i(%%j)%%k" "!a!-!c!-!b!.!d!"
- )
- )
- pause
复制代码
作者: 511182890 时间: 2015-4-30 17:04
回复 2# apang
谢谢,完美执行
作者: Batcher 时间: 2015-4-30 17:54
回复 9# 511182890 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /s /a-d *.dxf') do (
- for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
- set "a=%%i"
- if "!a:主副背料=-主副背料!" neq "%%i" (
- set "a=!a:主副背料=-主副背料!"
- ) else if "!a:副背料=-副背料!" neq "%%i" (
- set "a=!a:副背料=-副背料!"
- ) else (
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "a=!a:背料=-背料!"
- )
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "d=!c:~3!"
- set "c=!c:~0,2!"
- ren "%%a" "!a!-!c!-!b!.!d!"
- )
- )
- pause
复制代码
作者: sinsky 时间: 2015-4-30 23:52
回复 11# 511182890
一个可以处理多级子目录文件,改名 替换,正则,全部都可以,试试就知道。你值得拥有。。。
我说下另外一个问题。。。
好奇怪 为毛要限制一个小时只能回复10个。。。。 刚编辑好的内容全丢了。。。
你看我回你个贴容易么。。。 大半夜又来了。。。
作者: bailong360 时间: 2015-5-1 00:16
- @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 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /s /a-d *.dxf ^| findstr "米"') do (
- for /f "tokens=1-3 delims=()" %%i in ("%%~nxa") do (
- set "a=%%i"
- if "!a:主副背料=-主副背料!" neq "%%i" (
- set "a=!a:主副背料=-主副背料!"
- ) else if "!a:副背料=-副背料!" neq "%%i" (
- set "a=!a:副背料=-副背料!"
- ) else (
- set "a=!a:主料=-主料!"
- set "a=!a:副料=-副料!"
- set "a=!a:背料=-背料!"
- )
- set "b=%%j"
- set "b=!b:米=.!"
- set "c=%%k"
- set "d=!c:~3!"
- set "c=!c:~0,2!"
- ren "%%a" "!a!-!c!-!b!.!d!"
- )
- )
- 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://bathome.net./) |
Powered by Discuz! 7.2 |