我有一个批处理文件,它可以生成一个文件*.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.txt
ProgramLog2.txt
msiexec … /log c:\ProgramLog.txt
将覆盖名为 的现有文件ProgramLog.txt
。
如果必须这样做,请将msiexec
命令更改为
msiexec … /log c:\temp.txt
然后重命名temp.txt
为ProgramLog.txt
第一次、ProgramLog1.txt
第二次、ProgramLog2.txt
第三次等等。或者,执行原始命令:
msiexec … /log c:\ProgramLog.txt
第一次(ProgramLog.txt
不存在时)时,并在所有后续运行中创建temp.txt
并重命名它。