![在批处理文件中使用 for 循环输出文件名](https://linux22.com/image/1312638/%E5%9C%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%20for%20%E5%BE%AA%E7%8E%AF%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D.png)
我想用批处理命令重命名文件,并在列表中捕获原始文件和重命名的文件以提供交叉引用(DIR /OS >file
在批处理文件之前和之后执行不够严格)。
下面的文件可以很好地进行重命名,但我的理解还不足以使输出位正常工作(如果可能的话)。此外,下面示例中的输出取决于输出到文件还是屏幕。
我希望能够更多地了解这一点:
@echo off
set /a c=%1
setLocal ENABLEDELAYEDEXPANSION
For %%G in (*.tif) do (
echo %%G >infile.txt
ren %%G abc.!c!.tif
set /a c=c+1
echo %%G >outfile.txt
)
endlocal
答案1
睡了一觉后,我找到了问题的答案。我只需要写下即将重命名的文件的名称,因为我“知道”我将要给它起什么名字!最后很明显。
set /a c=%1
set param=%2
setLocal ENABLEDELAYEDEXPANSION
FOR %%i in (*.tif) do (
echo %%i >>in.txt
ren %%i %param%!c!.tif
echo %param%!c!.tif >>out.txt
set /a c=c+1
)
endlocal
我现在需要做的就是进行测试以阻止它再次重命名它重命名的第一个文件(可能取决于 var'c'中使用的数字和原始文件名)。