标题: [文件操作] [已解决]批处理 ren 命令怎样修改子文件里的文件名称? [打印本页]
作者: sdhaozao 时间: 2015-2-10 22:44 标题: [已解决]批处理 ren 命令怎样修改子文件里的文件名称?
本帖最后由 pcl_test 于 2018-3-18 19:29 编辑
咨询一个只有小白才问的问题
我现在只能理解到这样的步骤,关于批处理,我用这个代码可以修改当前目录内对应文件的名字,如果想顺便修改子文件内的名字应该怎么操作啊?
貌似CD进文件夹 和加/s/b 参数都不行,不要嘲笑我,我知道ren 貌似是没有/s/b 参数 复制代码
作者: pcl_test 时间: 2015-2-10 23:41
本帖最后由 pcl_test 于 2018-3-18 19:11 编辑
回复 1# sdhaozao
这要结合实际情况才可以,不同的情况,写法各异,主要还是路径的获取问题,与ren无关
假设有如下文件结构,现要将D:\test文件夹里的所有文件名前添加test字符
D:\test
│ 1.txt
│
└─A
│ 3.pdf
│
├─BB
│ g.exe
│
└─CC
└─CCC
h.rar
效果
D:\test
│ test1.txt
│
└─A
│ test3.pdf
│
├─BB
│ testg.exe
│
└─CC
└─CCC
testh.rar
那么可以这样- @echo off
- cd /d "D:\test\"
- for /f "delims=" %%a in ('dir /a-d /s /b') do ren "%%a" "test%%~nxa"
- pause
复制代码
作者: sdhaozao 时间: 2015-2-11 00:06
回复 2# pcl_test
不好意思可能是我没有讲清楚,
应该是这样的
D:\test
│ fit up.pdf
│
└─A
│ fit up.pdf
│
├─BB
│ fit up.pdf
│
└─CC
└─CCC
fit up.pdf
在全部的 fit up.pdf前面加上01,变成 01- fit up.pdf
当然我还会再加上你给我的另外一个命令, 这样文件最后就变成a-01-fit up.pdf 。 bb-01-fit up.pdf 这样的啦
每个文件夹下不超过8个PDF文件,对应编号是01-06, 只要写出一个文件,其余的我copy 改里面的内容应该就可以撸。
作者: DAIC 时间: 2015-2-11 09:19
不是貌似没有,而是肯定没用。
一个 ren 命令无法满足你的需求,你还要学习 for 命令。
作者: sdhaozao 时间: 2015-2-11 11:29
回复 4# DAIC
我是因为工作上最近接触了很多很多的文件才需要使用批处理文件,我怎么感觉看每一个单独的命令我都知道是什么意思,合在一起我就不知道他们要做什么了?
分析别人给我做的批处理代码的时候的困惑...
作者: DAIC 时间: 2015-2-11 12:29
回复 5# sdhaozao
这很正常。什么知识都是需要一个慢慢积累的过程。人家学了十年八年写出来的代码,你看不懂很正常。
我们泛泛之辈绝非生下来就懂BAT的天才,还是踏踏实实学习方为正道。
作者: sdhaozao 时间: 2015-2-11 12:51
本帖最后由 sdhaozao 于 2015-2-11 13:10 编辑
回复 2# pcl_test
你的这个代码不能执行,提示如下:
system can not find the specified
我修改了代码如下:- @echo off
- cd /d "D:\new\"
- for /f "delims=" %%a in ('dir /s /b *.pdf') do (
- ren "%%a" "01-%%~nxa"
- )
- pause
复制代码
效果是当前及子文件夹全部文件前面增加了01....
我找到一个思路,我将一下文件名字录入到1.txt 上面的代码能读取或者直接添加到代码中吗?
FIT-UP REPORT.pdf 01-FIT-UP REPORT.pdf
MAGNETIC PARTICLE EXAMINATION REPORT.pdf 05-MAGNETIC PARTICLE EXAMINATION REPORT.pdf
STAGE RELEASE NOTICE.pdf 04-STAGE RELEASE NOTICE.pdf
STRUCTURAL DEMENSIONAL REPORT AW.pdf 03-STRUCTURAL DEMENSIONAL REPORT AW.pdf
STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf 03-STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf
WELD VISUAL INSPECTION REPORT.pdf 02-WELD VISUAL INSPECTION REPORT.pdf
作者: pcl_test 时间: 2015-2-11 13:17
回复 7# sdhaozao
代码没问题,不是说了要结合实际情况才可以,system can not find the specified就说明路径的获取上有问题,代码仅供参考,所以你自己没改好,就会出现问题
作者: sdhaozao 时间: 2015-2-11 13:31
回复 7# sdhaozao
我这样直接给变量赋值的行为是不是很愚蠢啊, 但是应该怎么处理几个变量呢?
这个命令不能执行- @echo off
- cd /d "D:\New\"
- for /f "delims=" %%a in ('dir /s/b *.pdf') do (
- if "%%a"="FIT-UP REPORT.pdf"|ren "%%a" "01-%%~nxa"
- if "%%a"="STAGE RELEASE NOTICE.pdf"|ren "%%a" "04-%%~nxa"
- )
- pause
复制代码
作者: pcl_test 时间: 2015-2-11 13:45
本帖最后由 pcl_test 于 2018-3-18 19:26 编辑
回复 9# sdhaozao
思路是可以的,只是语法不对,而且如果文件多的话,那就要很长的代码了
假设有D:\test\的某个文件夹里有1.pdf、2.pdf- @echo off
- cd /d "D:\test\"
- for /f "delims=:" %%a in ('findstr /bln "::原名称|新名称" "%~f0"') do set n=%%a
- for /f "delims=" %%a in ('dir /a-d/s/b *.pdf') do (
- for /f "tokens=1* delims=|" %%b in ('more +%n% "%~f0"') do (
- if /i "%%~nxa" equ "%%b" ren "%%a" "%%c"
- )
- )
- pause&exit
- ::原名称|新名称
- FIT-UP REPORT.pdf|01-FIT-UP REPORT.pdf
- MAGNETIC PARTICLE EXAMINATION REPORT.pdf|05-MAGNETIC PARTICLE EXAMINATION REPORT.pdf
- STAGE RELEASE NOTICE.pdf|04-STAGE RELEASE NOTICE.pdf
- STRUCTURAL DEMENSIONAL REPORT AW.pdf|03-STRUCTURAL DEMENSIONAL REPORT AW.pdf
- STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf|03-STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf
- WELD VISUAL INSPECTION REPORT.pdf|02-WELD VISUAL INSPECTION REPORT.pdf
复制代码
作者: sdhaozao 时间: 2015-2-11 13:45
本帖最后由 sdhaozao 于 2015-2-11 13:47 编辑
最终解决方案,虽然看起来很愚蠢,作为新手我尽力了, 有大神愿意帮助精简代码最好了。- @echo off
- cd /d "D:\New\"
- for /f "delims=" %%a in ('dir /s/b "FIT-UP REPORT.pdf"') do (
- ren "%%a" "01-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "WELD VISUAL INSPECTION REPORT.pdf"') do (
- ren "%%a" "02-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "STRUCTURAL DEMENSIONAL REPORT AW.pdf"') do (
- ren "%%a" "03-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf"') do (
- ren "%%a" "03-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "STAGE RELEASE NOTICE_Part1.pdf"') do (
- ren "%%a" "04-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "MAGNETIC PARTICLE EXAMINATION REPORT.pdf"') do (
- ren "%%a" "05-%%~nxa"
- )
- for /f "delims=" %%a in ('dir /s/b "STAGE RELEASE NOTICE_Part2.pdf"') do (
- ren "%%a" "05-%%~nxa"
- )
- pause
复制代码
作者: sdhaozao 时间: 2015-2-11 13:54
回复 10# pcl_test
非常感谢,比我写那个短了一倍,已经解决了。拜谢!!- @echo off
- cd /d "D:\new\"
- for /f "delims=" %%a in ('dir /s/b *.pdf') do (
- if "%%~nxa" == "FIT-UP REPORT.pdf" ren "%%a" "01-%%~nxa"
- if "%%~nxa" == "WELD VISUAL INSPECTION REPORT.pdf" ren "%%a" "02-%%~nxa"
- if "%%~nxa" == "STRUCTURAL DEMENSIONAL REPORT AW.pdf" ren "%%a" "03-%%~nxa"
- if "%%~nxa" == "STRUCTURAL DIMENSIONAL INSPECTION REPORT BW.pdf" ren "%%a" "03-%%~nxa"
- if "%%~nxa" == "STAGE RELEASE NOTICE_Part1.pdf" ren "%%a" "04-%%~nxa"
- if "%%~nxa" == "MAGNETIC PARTICLE EXAMINATION REPORT.pdf" ren "%%a" "05-%%~nxa"
- if "%%~nxa" == "STAGE RELEASE NOTICE_Part2.pdf" ren "%%a" "05-%%~nxa"
- )
- pause
复制代码
作者: pcl_test 时间: 2015-2-11 14:04
回复 12# sdhaozao
其实这几天你发的贴都有许多人关注过,看浏览量就知道了,但因为批处理对精细的操作不是很好,再加上你的描述不够,大家都无从下手,操作越精细描述就要越详细,所以如果仅是命名这个操作,你能把命名规则说清楚了,还是可以做到的,至于对pdf的合并和分解,这个需要借助第三方软件
作者: sdhaozao 时间: 2015-2-11 14:34
回复 13# pcl_test
关键是我接触的时间少,所以不了解这方面的内容。
幸好,有大家的帮助,我以后也会多学习一点的。
PDF部分,我只能一个一个合并了。
非常感谢,现在这样已经让我合并的时候调整文件顺序简洁了很多。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |