Usando arquivos em lote do prompt de comando para renomear automaticamente os arquivos duplicados

0

Eu tenho arquivo em lote que gera um arquivo *.txt que eu uso para revisão alguns detalhes sobre o processo de instalação de um software, tudo bem MAS como eu posso gerar um novo arquivo *.txt no mesmo local com um nome diferente ou número?

Por exemplo: Se a pasta C:\Users\John\Documents contiver um arquivo chamado ProgramLog.txt , preciso do nome de uma nova alteração para *.txt , por exemplo. Programlog1.txt e assim por diante (deixando o ProgramLog.txt no mesmo local)

Desculpe, aqui está o meu lote:

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

Eu adicionei isso, renomei e adicionei um caractere extra (número um), mas sobrescreve o arquivo: - (

@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 
    
por Jonathan Calvo 09.09.2013 / 22:05

1 resposta

0

Você realmente precisa manter o primeiro arquivo chamado ProgramLog.txt ? Isso seria mais simples se você renomeie o primeiro arquivo para ProgramLog1.txt , o segundo para ProgramLog2.txt , etc. Porque dizer

msiexec … /log c:\ProgramLog.txt

vai sobrescrever um arquivo existente chamado ProgramLog.txt .

Se você precisar fazer isso, altere o comando msiexec para

msiexec … /log c:\temp.txt

e depois renomeie temp.txt para ProgramLog.txt na primeira vez, ProgramLog1.txt na segunda vez, ProgramLog2.txt na terceira vez, etc. Alternativamente, faça o seu comando original:

msiexec … /log c:\ProgramLog.txt

na primeira vez (quando ProgramLog.txt não existe), e em todas as execuções subsequentes, crie temp.txt e renomeie-o.

    
por 10.09.2013 / 02:13