У меня есть пакетный файл, который генерирует один файл *.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 ответ1

0

Вам действительно нужно сохранить первый файл с именем 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 и переименуйте его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .