Board logo

标题: [文件操作] 批量改名的BAT脚本求调整 [打印本页]

作者: qd2024    时间: 2022-9-12 07:11     标题: 批量改名的BAT脚本求调整

下面这4行代码能实现文件批量改名,但是 如果后列中有空格,则空格后面的部分不会被写到新名中,求调整 谢谢
  1. @echo off&color f1&title 改文件名
  2. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  3. if exist "%%i.*" ren "%%i.*" "%%j.*")
  4. echo.改名结束&ping 127.1>nul&exit -
  5. A135 A135_snake
  6. A136 A136_neck
  7. A137 A137_thin
  8. A138 A138_danger
  9. A139 A139_in danger
  10. A140 A140_at last
  11. A141 A141_interested
  12. A142 A142_allow
  13. A143 A143_think of
复制代码

作者: qd2024    时间: 2022-9-12 08:06

我找了 没有找到 ren 支持空格的方法。
作者: hlzj88    时间: 2022-9-12 08:43

楼主的问题描述不清,问 是从文件,还是从文本获取文件名,怎么匹配。改名前后的对比,依据什么样的规则改名。文件后缀是什么?
作者: qd2024    时间: 2022-9-12 09:24

回复 3# hlzj88


    谢谢

当前目录下有若干文件

文件名如 A135 136 137……  这个列是在EXCLE是做的   
EXCEL 第1列是文件夹中的文件名  第二列是 目标文件名
在EXCEL中处理好2列内容后 
粘贴到BAT的 第5行之下 运行可以改名


目前的问题是 现有代码 不支持空格   比如A139 运行代码后,目标是改为A139_in danger,但现有代码改成的是 A139_in


不考虑扩展名


辛苦 谢谢
作者: hfxiang    时间: 2022-9-12 09:46

回复 1# qd2024


   
试试把
for /f "tokens=1,2" %%i in ('more +4 "%~0"') do
改为
for /f "tokens=1*" %%i in ('more +4 "%~0"') do
作者: hlzj88    时间: 2022-9-12 10:10

回复 5# hfxiang
妙,原理不明白,可否解答?
作者: hfxiang    时间: 2022-9-12 10:24

回复 6# hlzj88


   
请查看for帮助:
for /?
...
...
        tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                          的 for 本身。这会导致额外变量名称的分配。m-n
                          格式为一个范围。通过 nth 符号指定 mth。如果
                          符号字符串中的最后一个字符星号,
                          那么额外的变量将在最后一个符号解析之后
                          分配并接受行的保留文本。

...
...
作者: hlzj88    时间: 2022-9-12 11:02

回复 7# hfxiang

谢谢,忘了。
作者: qd2024    时间: 2022-9-12 19:31

回复 5# hfxiang


    成功  谢谢
作者: Batcher    时间: 2022-9-13 14:38

回复 4# qd2024


Excel第二列的目标文件名是经过怎样的处理得到的呢?
请说说具体规律,也许可以全部使用BAT脚本实现。




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