Batch
Fermébrucine Messages postés 17975 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 30 novembre 2024 - 4 sept. 2022 à 13:49
1 réponse
4 sept. 2022 à 13:49
Bonjour,
Je ne suis pas sûr de ta ligne de commandes, je commente sur le plan général.
Sur le premier point, la boucle FOR lit le dernier fichier exécuté; pour traiter chaque fichier au fur et à mesure qu'ils sont lus, on doit soit passer par l'expansion des variables via setlocal enabledelayedexpansion et des variables exprimées par !var! au lieu de %var%, soit passer par une sous-routine via l'instruction CALL qui va appeler l'étiquette désignée où on effectue chaque commande et dont on revient au point de départ par EXIT /B.
Sur le deuxième, ce comportement est constant dans certaines commandes; il faut réduire le nom de la variable d'autant de caractères que nécessaire par la commande SET FOLDNAME=%FOLDNAME:~0,-n% où n est le nombre de caractères que je supprime à droite et tester le résultat par ECHO.
Un exemple d'une telle technique ici à adapter à ton cas:
@echo off
cd /D G:\
echo. > texte.txt
DIR /b \ma*>>tmp.txt
FOR /F "tokens=1 delims=" %%a IN (G:\tmp.txt) DO SET FOLDNAME=%%a & CALL :PROCESS
del texte.txt
DEL tmp.txt
GOTO :EOF
:PROCESS
SET FOLDNAME=%FOLDNAME:~0,-1%
IF NOT EXIST G:\%FOLDNAME%\texte.txt (
xcopy /I G:\texte.txt G:\%FOLDNAME%\
)
exit /b
:EOF