使用命令提示符批处理文件自动重命名重复文件

使用命令提示符批处理文件自动重命名重复文件

我有一个批处理文件,它可以生成一个文件*.txt,用于查看有关软件安装过程的一些详细信息,一切都很好,但是如何*.txt在同一位置使用不同的名称或编号生成新文件?

例如:如果文件夹C:\Users\John\Documents包含一个名为的文件,ProgramLog.txt我需要将新文件的名称更改为*.txt例如Programlog1.txt等等(将其保留ProgramLog.txt在同一位置)

抱歉,这是我的批次:

msiexec /i "C:\Windows\System32\John.msi" /passive /log c:\Programlog.txt 

我添加了这个,重命名并添加了一个额外的字符(数字一)但覆盖了文件:-(

@ECHO Off &SETLOCAL 
FOR %%a IN (*.txt) DO CALL:processFile "%%~a" 
goto:eof 

:processFile 
SETLOCAL 
:loop 
SET /a fileCounter+=1 
SET "fileName=%~n1%filecounter%%~x1" 
IF EXIST "C:\Users\%username%\Desktop\%fileName%" GOTO:loop 
ECHO MOVE "%~1" "C:\Users\%username%\Desktop\%fileName%" 
ENDLOCAL 
goto:eof 

答案1

你真的需要保留第一个文件的名称吗?如果你只是将第一个文件重命名为,将第二个文件ProgramLog.txt重命名为,等等,这会更简单。因为说ProgramLog1.txtProgramLog2.txt

msiexec … /log c:\ProgramLog.txt

将覆盖名为 的现有文件ProgramLog.txt

如果必须这样做,请将msiexec命令更改为

msiexec … /log c:\temp.txt

然后重命名temp.txtProgramLog.txt第一次、ProgramLog1.txt第二次、ProgramLog2.txt第三次等等。或者,执行原始命令:

msiexec … /log c:\ProgramLog.txt

第一次(ProgramLog.txt不存在时)时,并在所有后续运行中创建temp.txt并重命名它。

相关内容