Fichier de commandes, renommer un fichier sur plusieurs ordinateurs et copier une nouvelle version

0

C’est ce que j’ai écrit jusqu’à présent dans les scripts que j’avais utilisés par le passé. J'ai des connaissances de base, je construis et je fais des recherches au fur et à mesure.

Je reçois actuellement une erreur de syntaxe après l'écho de renommer / copier.

Peux-tu aider s'il te plait?

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
Mork74
la source
Si vous voulez des lignes noires, utilisez echo.et non echo off .
7h3w1z4rd

Réponses:

1

Il y a beaucoup d'erreurs dans ce script.

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

forles instructions doivent utiliser une valeur alpha pour la variable (voir la documentation de MS ). Pas une variable numérique - qui sont conservés pour les paramètres transmis à un fichier de commandes.

Essayez quelque chose comme ça à la place.

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

Et ...

echo Renommer / Copier des fichiers en%

doit être changé pour

echo Renaming /Copying files to %%a

Et...

Ren / f "\ %% 1 \ c $ \ Fichiers de programme (x86) \ SWIFT \ NSL \ jnsl \ wsnaddr.txt" "c $ \ Fichiers de programme (x86) \ SWIFT \ NSL \ jnsl \ wsnaddr.old"

doit être changé pour:

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

Parce qu'il n'y a pas de /fparamètre et que le second paramètre devrait être un simple nom de fichier plutôt qu'un chemin complet (voir la documentation de MS ). (et bien sûr j'ai changé le %%1pour correspondre à la nouvelle %%avariable)

Je suis également confus par toutes les echo offdéclarations. Habituellement, vous n'en avez qu'un @ECHO OFFau début du script. Mais cela ne devrait causer aucune erreur. Cela crée parfois des résultats déroutants.

Je vous recommande de vérifier le <command> /?résultat d'une ligne de commande si vous ne l'avez pas encore découvert. Il devrait contenir les mêmes informations que la documentation MS à laquelle j'ai lié.

David Woodward
la source
merci mais erreur samed
Mork74
la syntaxe de la commande est incorrecte
Mork74
Voir ma réponse mise à jour. Il y a beaucoup d'erreurs dans ce script.
David Woodward
0

merci, cela semble avoir fonctionné

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

ren "\ %% a \ c $ \ Program Files (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"
)
Mork74
la source