Arquivo em lote, renomeie um arquivo em vários computadores e copie uma nova versão

0

Isto é o que eu escrevi até agora das partes que usei no passado. Eu tenho conhecimento básico e construo e pesquiso as coisas à medida que vou.

Atualmente, recebo um erro de sintaxe após a renomeação / cópia do eco.

Você pode por favor ajudar?

echo SWIFT UPDATER
echo off
echo off
echo Ready to go?
pause

for /F "tokens=*" %%1 in (pc_list.txt) do (
echo Renaming / Copying files to %
Ren /f "\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" "c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"

copy "\server\infratech\Servereng\APPS-UK\Swift Update\wsnaddr.txt" "\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\" >> "\server\infratech\Servereng\APPS-UK\Swift Update\log.txt"
)
:::: End Copy ::::::
@echo off
    
por Mork74 10.10.2016 / 16:52

2 respostas

1

Existem muitos erros neste script.

for /F "tokens=*" %%1 in (pc_list.txt) do (

As instruções

for devem usar um valor alfa para a variável (consulte Documentação MS ). Não é uma variável numérica - que é preservada para parâmetros passados para um arquivo de lote.

Tente algo assim em vez disso.

for /F "tokens=*" %%a in (pc_list.txt) do (

E ...

echo Renaming / Copying files to %

precisa ser alterado para

echo Renaming /Copying files to %%a

E ...

Ren /f "\%%1\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" "c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"

precisa ser alterado para:

IF EXIST "\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old" del /f /q "\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.old"
ren "\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\wsnaddr.txt" wsnaddr.old

Porque não há nenhum parâmetro /f e o segundo parâmetro deve ser um nome de arquivo simples em vez de um caminho completo (consulte Documentação MS ).  (e, claro, eu mudei o %%1 para coincidir com a nova variável %%a )

Também estou confuso com todas as declarações echo off . Normalmente, você teria apenas um @ECHO OFF no início do script. Mas isso não deve causar erros. Apenas faz a saída confusa às vezes.

Eu recomendaria examinar a saída <command> /? de uma linha de comando se você ainda não descobriu isso. Ele deve ter as mesmas informações que a documentação do MS que eu criei.

    
por 10.10.2016 / 19:38
0

obrigado, isso parece ter funcionado

para / F "tokens = *" %% a in (pc_list.txt) do (

ren "\ %% a \ c $ \ Arquivos de Programas (x86) \ SWIFT \ NSL \ jnsl \ wsnaddr.txt" wsnaddr.old

copy "\server\infratech\Servereng\APPS-UK\Swift Update\wsnaddr.txt" "\%%a\c$\Program Files (x86)\SWIFT\NSL\jnsl\" >> "\server\infratech\Servereng\APPS-UK\Swift Update\log.txt"
)
    
por 12.10.2016 / 07:52