jullly 发表于 2022-4-26 18:22

【已解决】求各位师傅指导,写个依次批量搜索、复制、重命名的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
)
)

jullly 发表于 2022-4-26 18:29

补充:
“搜索名.txt”里的内容(注意有重复的文件):
1.jpg
2.jpg
1.jpg

对应“新名.txt”里的内容:
a.png
b.png
c.png

平淡最真 发表于 2022-4-26 20:17

第三步,那个%%i属于未定义吧,前面那个for结束了。
一个对应一个来改名,批处理实现比较难吧,因为for好像是必须全部遍历的,没有break这种语法

ericwise 发表于 2022-4-26 22:30

可以试试for嵌套

xiadongming 发表于 2022-4-26 22:51

Monitor 发表于 2022-4-27 08:54

@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]
查看完整版本: 【已解决】求各位师傅指导,写个依次批量搜索、复制、重命名的bat脚本