Salut,
j'essaye de créer un fichier .bat sous windows xp.
Le but est de zipper des séries de 2 fichiers (*.cpi et *.tfo) et un répertoire dans un fichier zip.
Les fichiers et répertoires de chaque série ont pour nom un numéro d'identification commun, qui doit devenir le nom du zip.
En cherchant je suis tombé sur des scripts qui sont supposés faire environ ça mais ça ne fonctionne pas ici.
Pour récupèrer le numéro d'identification le script utilise le nom d'un des 2 fichiers (*.tfo)
Les commandes sont du genre
Code :
- cd C:\Temp\Test
- for /f %%i in (*.tfo) do (start "compression des fichiers" /wait "C:\Program Files\Utilities\7-Zip\7z.exe" a -tzip "C:\Temp\Upload\%%~ni.zip" "C:\Temp\Test\%%~ni\" "C:\Temp\Test\%%~ni.cpi" "C:\Temp\Test\%%~ni.tfo" )
|
En lancant la boucle for directement àpd la ligne de commande la réponse est " %%i était innatendu. "
EDIT : C'est bon le problème venait des double %%, un seul suffit. Et le /f n'est pas nécessaire, il peut être utile si on a une liste de fichiers, dont on veut utiliser seulement le nom, dans un fichier qu'on met à la place de *.tfo .
Me reste plus qu'a trouver comment dire au script d'ouvrir d'abord une ligne de commande pour que la boucle soit bouclée.
EDIT2 : Pour ceux que ça intéresse voici le script final. En fait en ligne de commande il faut un seul % alors que dans un fichier .bat il en faut 2. Il est possible de rajouter des messages standards au lieu de celui qui s'affiche par défaut lors des pauses. La ligne @echo off peut être mis en commentaire si vous vouler voir ce qu'il ce passe.
Code :
- @echo off
- cmd /C
- color 0A
- cd "C:\TEMP\TFE"
- pause
- for %%x in (C:\TEMP\TFE\*.tho) do (start "compression des données" /wait "C:\Program Files\Utilities\7-Zip\7z.exe" a -tzip "C:\TEMP\upload\%%~nx.zip" "C:\TEMP\TFE\%%~nx\" "C:\TEMP\TFE\%%~nx.cpi" "C:\TEMP\TFE\%%~nx.tho" )
- pause
|
Message édité par shakaz le 18-10-2007 à 20:47:02