DOS et fichier batch paramétrés

DOS et fichier batch paramétrés - Windows & Software

Marsh Posté le 02-01-2006 à 18:18:49    

Voila, je me demande comment créer un fichier batch qui copirait automatiquement plusieur fichiers, selon leur extention dans un répertoire qui leur correspond
 
(par exemple les fichiers batch dans un dossier "BAT", les fichiers "MP3" dans un dossier "MP3"...)
 
La commande serait la suivante : "copi zik.mp3 truc.bat"
 
Je sais qu'il faut que j'utilise les %1 %2... Mais je ne voit pas comment inclure le fait que le fichier batch trie automatioquement les fichier selon leur extentions.
 
J'ai essayer un truc comme ca, mais ca ne foctionne pas :
 

Citation :

@ECHO OFF
CLS
ECHO Vous allez copier les fichiers entrés, dans les réperoires correspondants.
PAUSE
: DEB
FOR %%i IN (%2 %3 %4 %5)
IF NOT EXIST %1 GOTO err
IF "%1"=="" GOTO fin
IF "%1"=="stop" GOTO fin
IF "%1"==".BAT" goto copbat
IF "%1"==".DOC" goto copdoc
IF "%1"==".XLS" goto copxls
 
:COPBAT
COPY %1.BAT C:\bat\bat
SHIFT
GOTO deb
 
:COPDOC
COPY %1.DOC C:\bat\word
SHIFT
GOTO deb
 
:COPXLS
COPY %1.XLS C:\bat\xls
SHIFT
GOTO deb
 
:ERR
rem CLS
ECHO Le fichier %1 n'éxiste pas.
GOTO fin
 
:FIN
CLS


 
De l'aide ?
 
Merci !


Message édité par Drwily le 02-01-2006 à 18:21:33
Reply

Marsh Posté le 02-01-2006 à 18:18:49   

Reply

Marsh Posté le 02-01-2006 à 18:30:13    

deja tes copy c'est :
 
COPY *.xls c:\bat\xls
 
et non :
 
COPY %1.XLS C:\bat\xls


---------------
I am Alpha and Omega, the beginning and the end, the first and the last
Reply

Marsh Posté le 02-01-2006 à 18:35:11    

Bah non puisque le nom du fichier est entré avec le fichier batch.
 
Le %1 correspond au nom du fichier, si je met *.XLS il va me copier tous les fichier avec cette extention. Or je veux qu'il ne copi QUE le (ou les) fichier que j'ai entré en paramètre après le fichier batch.
 
Sinon j'ai cette solution la :
 

Citation :

@ECHO ON
CLS
ECHO Vous allez copier les fichiers entrés, dans les réperoires correspondants.
PAUSE
 
: DEB
IF "%1"=="" GOTO fin
IF "%1"=="stop" GOTO fin
IF NOT EXIST %1 GOTO err
FOR %%i (%2 %3 %4) DO COPY A:\%1 C:\bat\%2
SHIFT
GOTO deb
 
:ERR
ECHO le fichier %1 n'existe pas !
goto fin
 
:FIN


 
Mais pour les paramètres ca donnera "copi.bat truc bat docu doc zik mp3"
 
en fait le %1 correspond au nom du fichier et le %2 au type de répertoire. Mais y a t'il un autre moyen ?


Message édité par Drwily le 02-01-2006 à 18:43:36
Reply

Marsh Posté le 02-01-2006 à 20:11:29    

Le but est donc de décomposer les noms des fichiers en séparant le nom, et l'extension, de les copier selon l'extension.
Je crois qu'on ne peut dépasser %9 donc pas plus de 9 fichiers à la fois.
 
Les copier tous (for %f in (*.doc) do copy %f c:\bat\doc) serait plus simple...

Reply

Marsh Posté le 02-01-2006 à 23:29:49    

Merci bien, si j'utilise 3 extention je dois utiliser le "for" 3 fois ?
 
Si on ne peu pas dépasser %9 on utilise la commande "SHIFT" mais si on décompose le nom et l'extention je ne vois pas coment faire... J'essaye ta technique.
 
Merci encore !

Reply

Marsh Posté le 03-01-2006 à 20:01:43    

Si c'est pour copier tous les fichiers d'un type, le for est efficace.
Si c'est pour ne traiter que certains, c'est plus difficile.
 
Si "DOS" ne trouve rien dans le "tri" (*.mp3), la boucle ne fera rien, donc ça ne craint rien de mettre un "grand" nombre de for (un pour chaque type).
 
Selon le besoin, ça serait peut-être possible de gérer les extensions à copier avec un truc du genre
 
"copi MP3 DOC" avec donc MP3 en %1 et DOC en %2. En testant dans le batch ("DOC", "MP3" ) avec des étiquettes, mais sais pas(plus) si possible de faire l'un PUIS l'autre, .. Ca permettrait de choisir au lancement les types concernés [faut voir le besoin]

Reply

Marsh Posté le 04-01-2006 à 17:50:14    

Le besoin esyt de copier chaque type de fichier ver le dosier qui lui correspond. En sachant que l'utilisateur n'entre que les nom des fichier qu'il a besoin de déplacer. Pas des joker.

Reply

Marsh Posté le 04-01-2006 à 23:00:55    

L'utilisateur ne peut faire (en lui expliquant un peu le comment ça marche)
 
copy toto.mp3 mp3
copy truc.doc doc
copy machin.mp3 mp3
 
au lieu de copi toto.mp3 truc.doc machin.mp3 (?).
 
Faudrait trouver un tutoriel sur le BATCH pour voir si possible de séparer l'extension du nom de fichier. En langage quelconque, facile, mais en batch, faut chercher (je ne sais faire que des trucs simpl(ist)es).
Sinon, copi pourrait s'écrire en C (mode console). Pas trop de temps en ce moment.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed