Batch
brucine Messages postés 21765 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je me bas pour reussir a faire ce que je voudrais....
je souhaiterais que pour chaque fichier .cue dans un meme dossier, le nom de ce .cue sans lextension, soit mis en tant que variable, et quune commande utlisant cette varibale soit lancé, et ensuite que ca passe a la suite, au .cue suivant dans le dossier.
(la commande a lancer pour chaque fichier .cue trouvé est:
bchunk.exe ""nom du fichier".bin" ""nom du fichier".cue" "nom du fichier")
au mieux jai reussit a ce quil lexecute mais que pour le dernier fichier listé autant de fois quil y a de *.cue dans le dossier. et la jen suis arrivé a ce quil ne fasse plus rien car il ajoute un espace entre "nom du fichier" et les extension que je specifie dans ma commande avec ceci:
for /f "delims=" %%1 in ('dir /A-D /B *.cue') do (SET bin=%%~n1 & bchunk.exe "%bin%.bin" "%bin%.cue" "%bin%")
si quelquun aurait la gentillesse de maider...
merci davance
Windows / Firefox 104.0
- Batch
- Fichier batch - Guide
- Batch converter - Télécharger - Photo & Graphisme
- Batch renommer une partie du nom de plusieurs fichiers ✓ - Forum Autoit / batch
- Renommer tous les fichiers d'un dossier - Forum Windows
- Color batch - Forum Autoit / batch
1 réponse
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