pour les forts [batch avancé] - Programmation
Marsh Posté le 03-12-2001 à 23:30:51
Citation : depuis un peu partout |
haaaaaaaaaa ça c'est limpide.
Marsh Posté le 03-12-2001 à 23:34:52
tu veux dire, il scan tous le dur a la recherche des .txt, et les copie dans un rép précis ? houla, c vrai que ca doit pas être tout simple ! enfin, je laisse al parole aux autres !
Marsh Posté le 03-12-2001 à 23:48:39
bjone a écrit a écrit :
|
pour être plus précis :
j'ai un répertoire de films qui ont chacun leur fichier .nfo
donc on a en gros
d:\films\french\film1\film1.nfo
d:\films\french\film2\film2.nfo
ces fichiers doivent être copiés vers d:\nfo :
d:\nfo\film1.nfo
d:\nfo\film2.nfo
ça va là ?
Marsh Posté le 04-12-2001 à 00:00:28
sinon un truc du gout:
*******************
:lp
if "%1"=="" goto quit
copy %1\*.nfo \nfo
shift
goto lp
:quit
***********************
avec dans ton cas:
en étant dans d:\films\french\
yo.bat film1 film2 ..............
Marsh Posté le 04-12-2001 à 00:02:28
bjone a écrit a écrit : c'est mieux. j'aurais une solution avec le 4dos..... |
c'est que je me faisais une mauvaise idée du 4dos alors...
tu poposes quoi ?
Sinon j'ai trouvé ce script, mais j'arrive pas à comprendre ce que fait le gars :
Citation : |
Marsh Posté le 04-12-2001 à 00:04:12
bjone a écrit a écrit : sinon un truc du gout: ******************* :lp if "%1"=="" goto quit copy %1\*.nfo \nfo shift goto lp :quit *********************** avec dans ton cas: en étant dans d:\films\french\ yo.bat film1 film2 .............. |
ou ce serait pas mal, sauf que il peut y avoir
film1\cd1 et
film1\cd2
enfin c'est variable, le .nfo ne se trouve pas toujours au même endroit.
Marsh Posté le 04-12-2001 à 00:07:18
unix rulezz
find /src -type f -name \*.txt -exec cp {} /dest \;
(tu peux trouver un portage de find pour dos/win...)
<troll> aller vous coucher ! </troll>
Marsh Posté le 04-12-2001 à 00:09:15
phraide a écrit a écrit : unix rulezz find /src -type f -name \*.txt -exec cp {} /dest \; (tu peux trouver un portage de find pour dos/win...) <troll> aller vous coucher ! </troll> |
chiche j'installe linux !
Marsh Posté le 04-12-2001 à 10:55:37
Je vais te donner une piste. Je fais mes exemples avec des .xls (j'ai pas de nfo sur mon disque...)
N.B. Je suis sous 2000, le résultat peut changer sur Win 9x
Si tu fais :
p:\>dir *.xls /s|find "Répertoire" tu obtiens
Répertoire de p:\
Répertoire de p:\A récuperer\COPIE
Répertoire de p:\_Données\dde67
donc si tu fais : dir *.xls /s|find "Répertoire" >>toto.bat tu obtiens un fichier contenant les lignes d'instruction suivantes :
Répertoire de p:\
Répertoire de p:\A récuperer\COPIE
Répertoire de p:\_Données\dde67
il faut donc maintenant créer un fichier répertoire.bat qui va faire les opérations suivantes :
- remarque préliminaire :
dans la 1° ligne de mon exemple, les variables suivantes sont définies :
%0 vaut Répertoire
%1 vaut de
%2 vaut p:
dans la 2° ligne de mon exemple, les variables suivantes sont définies :
%0 vaut Répertoire
%1 vaut de
%2 vaut p:\A
%3 vaut récuperer\COPIE
S'il n'y avait pas d'espace dans les noms de fichier ce serait plus simple...
1) Quand il n'y a pas d'espace :
if exist %3 goto espace
copy %2\*.xls c:\repertoire\
:espace
set repert=%2 %3
if not exist %4 goto copie
set repert=%repert% %4
if not exist %5 goto copie
set repert=%repert% %5
etc etc dépend du nombre d'espace que tu peux avoir
Mais celà ne marche pas si un nom de répertoire contient
2 espaces consécutifs
:copie
copy %repert%\*.xls c:\repertoire\
Teste et dis nous si celà marche
P.S. :
termine ton batch par :
del toto.bat
set repert=
[edtdd]--Message édité par JPA--[/edtdd]
Marsh Posté le 04-12-2001 à 13:48:47
JPA a écrit a écrit : Je vais te donner une piste. Je fais mes exemples avec des .xls (j'ai pas de nfo sur mon disque...) N.B. Je suis sous 2000, le résultat peut changer sur Win 9x Si tu fais : p:\>dir *.xls /s|find "Répertoire" tu obtiens Répertoire de p:\ Répertoire de p:\A récuperer\COPIE Répertoire de p:\_Données\dde67 donc si tu fais : dir *.xls /s|find "Répertoire" >>toto.bat tu obtiens un fichier contenant les lignes d'instruction suivantes : Répertoire de p:\ Répertoire de p:\A récuperer\COPIE Répertoire de p:\_Données\dde67 il faut donc maintenant créer un fichier répertoire.bat qui va faire les opérations suivantes : - remarque préliminaire : dans la 1° ligne de mon exemple, les variables suivantes sont définies : %0 vaut Répertoire %1 vaut de %2 vaut p: dans la 2° ligne de mon exemple, les variables suivantes sont définies : %0 vaut Répertoire %1 vaut de %2 vaut p:\A %3 vaut récuperer\COPIE S'il n'y avait pas d'espace dans les noms de fichier ce serait plus simple... 1) Quand il n'y a pas d'espace : if exist %3 goto espace copy %2\*.xls c:\repertoire\ :espace set repert=%2 %3 if not exist %4 goto copie set repert=%repert% %4 if not exist %5 goto copie set repert=%repert% %5 etc etc dépend du nombre d'espace que tu peux avoir Mais celà ne marche pas si un nom de répertoire contient 2 espaces consécutifs :copie copy %repert%\*.xls c:\repertoire\ Teste et dis nous si celà marche P.S. : termine ton batch par : del toto.bat set repert= |
merci beaucoup JPA !
Je vois à peu près le principe, mais je dois lancer le deuxième bat (repertoire.bat) avec quels paramètres pour qu'il parcourt le fichier toto.bat ?
J'avais pensé faire un dir *.nfo /s /n > listeNFO.txt (il y a au maximum 50 fichiers au total)
mais je ne sais pas comment réutiliser ce fichier qui contient la liste des chemins complets à tous les fichiers .nfo ?
(par exemple dans une boucle for qui ferait un simple copy de chacun des fichiers)
[edtdd]--Message édité par altus--[/edtdd]
Marsh Posté le 04-12-2001 à 14:00:02
Non, c'est le contraire...
tu lance toto.bat et il va exécuter :
Répertoire de p:\
Répertoire de p:\A récuperer\COPIE
Répertoire de p:\_Données\dde67
comme répertoire est un.bat, il va exécuter répertoire...
Zut, je viens de m'apercevoir d'un pb...
Il ne va exécuter que la 1° ligne vu qu'il n'y a pas de call.
Je recherche (pas tout de suite) et je reposte
A+
Marsh Posté le 04-12-2001 à 18:17:26
j'ai trouvé une solution pour NT 2000, mais pas pour 9x :
après avoir créé toto.bat (dans cette méthode, je prèfère l'appeler toto.txt) tu lance la commande suivante :
for /F "tokens=1,2*" %a in (toto.txt) do %a %c
celà va exécuter le progr répertoire.bat avec le bon paramètre
Il ne te reste plus qu'à ordonner tout celà et à mettre les commandes dans des batch.
ATTENTION : dans les batch, il te faudra remplacer %a par %%a etc.
A+ pour de nouvelles aventures
Marsh Posté le 04-12-2001 à 19:18:31
finalement mon script se résume à ça :
dir d:\films\_french_\*.nfo /s /b > nfo.txt
for /F %%a in (nfo.txt) do copy %%a d:\temp\nfo
cls
Comme quoi c'est facile quand on sait
Marsh Posté le 03-12-2001 à 23:05:02
j'aime pas quand les gens mettent ce titre, mais là ça m'a vraiment pas l'air facile à faire...
Alors :
J'aimerais faire un script batch qui copierait des fichiers disons .txt depuis un peu partout vers un répertoire spécifié disons c:\textes
Ca ne marche pas avec copy (logique) et xcopy non plus (il copie l'arborescence avec)
Merci de votre aide !
---------------
Ganz kühl bleiben! JM. | Section Audio