Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5351 connectés 

 


Dernière réponse
Sujet : [batch avancé] pour les forts
altus 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 :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
altus 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 :)
altus merci t'es génial JPA   :wahoo:  
j'aime bien tes aventures
JPA 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
JPA 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+
altus

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)  
 
 :wahoo:

 

[edtdd]--Message édité par altus--[/edtdd]

JPA 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]

altus en utilisant les pipes ?
 
dir *.nfo /s /b > copy ???
altus

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 ! :D </troll>  




 
chiche j'installe linux !

phraide 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 ! :D </troll>
altus

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.

altus

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 :


 Try the following LAKE.BAT to copy a file from anywhere to c:\backup\data\.
 
 @echo off
 if %1!==! goto End
 if not exist c:\backup\nul md c:\backup
 if not exist c:\backup\data\nul md c:\backup\data
 
 if exist c:\~tmp\nul goto Error
 if exist %1 xcopy %1 c:\~tmp\ > nul
 if not exist c:\~tmp\nul for %%c in (echo.Error! goto:Break) do %%c
 
 c:
 cd \~tmp
 lfnfor on
 for %%f in (*.*) do move "%%f" "c:\backup\data\%%f.bak"
 lfnfor off
 
 explorer c:\backup\data
 deltree /y c:\~tmp >nul
 goto End
:Error
 echo. Error:
 echo. "%0" tried to create a new folder
 echo. "c:\~tmp" but this folder already exist!
:Break
 echo.
 pause
:End
 cls

bjone 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 ..............
bjone c'est mieux.
 
j'aurais une solution avec le 4dos.....
altus

bjone a écrit a écrit :

Citation :

depuis un peu partout


 
haaaaaaaaaa ça c'est limpide.  




 
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à ? :pt1cable:

Obscure 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 !  ;)
bjone

Citation :

depuis un peu partout


 
haaaaaaaaaa ça c'est limpide.

altus 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 !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)