J'essaie d'écrire un script batch script qui va parcourir une liste d'ordinateurs, lire un fichier sur l'ordinateur, délimiter le nom du fichier, puis faire écho au nom de l'ordinateur et au résultat du nom du fichier. Le problème que j'ai est d'obtenir que la variable du nom de l'ordinateur se remplisse dans la commande imbriquée FOR /R. Voici mon script :
@ECHO OFF
SetLocal EnableDelayedExpansion
SET LIST=Computers.txt
FOR /F %%A IN (%LIST%) DO (
FOR /R \\%%A\c$\folder1\folder2 %%B IN (*.txt) DO (
FOR /F "tokens=2 delims=." %%C IN ("%%B") DO (ECHO %%A %%C
)
)
)
EndLocal
Le nom du fichier est quelque chose comme RB-C1SRC20160716CL.P17.txt. Le résultat que je recherche est donc
MyPCName P17
Mais j'obtiens un résultat vide. Ce que j'ai découvert, c'est que le %%A var est alimenté par le fichier texte, mais que le %%A var dans le FOR /R ne l'est pas. Si j'effectue un ECHO sur les commandes FOR, je vois FOR /R \%a \folder1\folder2 au lieu de FOR /R \MyPCName\folder1\folder2. Cette panne empêche le reste du script de fonctionner correctement.
UPDATE :
Merci à aschipfl de m'avoir orienté dans la bonne direction. J'ai finalement réussi à faire fonctionner le script. Voici la version qui fonctionne :
@ECHO OFF
SetLocal EnableDelayedExpansion
SET LIST=Computers.txt
FOR /F %%A IN (%LIST%) DO (
SET WKSTN=%%A
CALL :SUB
)
EndLocal
GOTO :EOF
:SUB
FOR /R \\%WKSTN%\c$\folder1\folder2 %%B IN (*.txt) DO (
FOR /F "tokens=2 delims=." %%C IN ("%%B") DO (ECHO %%A %%C
)
)
1 votes
En rapport : Obtenir la taille des sous-dossiers uniquement à l'aide d'une commande batch