【已解决】求各位师傅指导,写个依次批量搜索、复制、重命名的bat脚本
本帖最后由 jullly 于 2022-4-27 10:24 编辑求各位师傅指导,写个依次批量搜索、复制、重命名的bat脚本
第1步:根据“搜索名.txt”里的多个文件名,批量搜索老文件夹“D:\old”
第2步:将搜索到的文件,复制到新文件夹“D:\new”
第3步:根据“新名.txt”里的多个文件名,来批量重命名,新文件夹里刚刚复制过去的文件
我写了第1、2步,运行成功了:
@echo off
for /f %%i in (搜索名.txt) do (if exist "D:\old\%%i" copy "D:\old\%%i" "D:\new")
但第3步运行失败了:
for /f %%j in (新名.txt) do ren "D:\new\%%i" "%%j"
求各位师傅指导,应该怎么编写第3步
多谢各位师傅指出我的错误,考虑到“搜索名.txt”里有重复文件的原因,最终我使用嵌套解决了问题,完整版如下:
@echo off
for /f %%i in (搜索名.txt) do (
if exist "D:\old\%%i" (
copy "D:\old\%%i" "D:\new"
for /f %%j in (新名.txt) do ren "D:\new\%%i" %%j
)
) 补充:
“搜索名.txt”里的内容(注意有重复的文件):
1.jpg
2.jpg
1.jpg
对应“新名.txt”里的内容:
a.png
b.png
c.png 第三步,那个%%i属于未定义吧,前面那个for结束了。
一个对应一个来改名,批处理实现比较难吧,因为for好像是必须全部遍历的,没有break这种语法 可以试试for嵌套 @echo off
for /f %%i in (搜索名.txt) do (if exist "D:\old\%%i" copy "D:\old\%%i" "D:\new")
上面的 i 不能用到下面吧?
for /f %%j in (新名.txt) do ren "D:\new\%%i" "%%j"
页:
[1]