Votre question

Script Batch marche pas !! Pourquoi ?? [BATCH]

Tags :
  • Echo
  • Programmation
Dernière réponse : dans Programmation
14 Janvier 2006 17:09:46

Salut tout le monde, bon voila étant une personne très flemarde j'ai meme la flem de bouger et faire quelque clic de souris !!
De plus tout est en bazard !! Donc j'ai déssidé que mon ordinateur était assez intelligent pour ranger mes dossier à ma place !!
Et apparement non :-?

Voila mon script :
  1. @echo off
  2. dir /s /b "%userprofile%\Mes documents\*.mp3">>fichier.txt
  3. echo fin>>fichier.txt
  4.  
  5. :replay
  6. for /F "tokens=1,1* delims=" %%i in (fichier.txt) do (
  7. set fichier=%%i
  8. goto next
  9. )
  10. :next
  11. if "%fichier%"=="%userprofile%\Mes documents\Ma musique\" goto replay
  12. move /y "%fichier%" "%userprofile%\Mes documents\Ma musique\"
  13. goto replay
  14.  
  15. :end
  16. echo .
  17. echo .
  18. echo . C'est la fin tout les fichiers on ete range
  19. echo .
  20. pause


problem :
Il m'affiche : fichier introuvable ! Et de plus lorsque je recommence ma boucle "for" en espérant que ce soir le 2eme fichier qui soit pri en compte et bien c'est toujours ce premier fichier qui apparait.

Donc ma 2eme question : comment rechercher et effacer une chaine de caractère dans un fichier txt ??

Merci à tous !

Autres pages sur : script batch marche batch

a b L Programmation
14 Janvier 2006 21:04:06

ce que je vois, c'est que ton for ne lit que la première ligne car le GOTO te fais sortir du FOR.
Du coup quand tu retourne avant le for, la boucle est recommencée.

Donc, met tout ce qui est dans "next" dans la boucle ;-)
et pour le FOR essaie quelque chose du genre "tokens=*" au lieu de "tokens=1,1* delims="
Pour éviter que ça coupe aux espaces s'il y en a dans un des répertoire (je suis pas sûr que c'est le cas).

Sinon il faut toujours debugger avant de tester. Ne fais aucun MOVE DEL etc si tu n'es pas sûr que ça marche. Remplace tout ça par des ECHO et si ça marche tu remplaces le tout.
14 Janvier 2006 21:08:37

ok je vais tester tout sa ! merci !!

mais si je laisse le tout dans la boucle "for" avant le "next" alors comment fera le script pour revenir au point de départ sans oublié ce qu'il est entrain de fér il faudra quand meme que je refasse un "goto" afin qu'il revienne et alors la sa reviendra à la meme chose que j'ai posté ! non ?

C'est vrai que c'est une très bonne remarque et dailleur je vais l'appliquer tout de suite mais je me suis habitué à travailler directement c'est pour sa !! Ou sa passe ousa casse tu connais :-D ?? lol
Mais je vais remplacer le "move" par un "echo" meme si les fichier en eux meme ne sont pas très important !

Merci je vous donne de mes nouvelles plus tard ;-)
Contenus similaires
a b L Programmation
14 Janvier 2006 21:15:54

Ce que je disais pour la boucle for c'est ça:

  1. @echo off
  2. dir /s /b "%userprofile%\Mes documents\*.mp3">>fichier.txt
  3. echo fin>>fichier.txt
  4.  
  5. for /F "tokens=1,1* delims=" %%i in (fichier.txt) do (
  6. set fichier=%%i
  7.  
  8. if "%fichier%"=="%userprofile%\Mes documents\Ma musique\" goto replay
  9. move /y "%fichier%" "%userprofile%\Mes documents\Ma musique\"
  10. )
  11.  
  12. :end
  13. echo .
  14. echo .
  15. echo . C'est la fin tout les fichiers on ete range
  16. echo .
  17. pause


Je comprend pas pourquoi tu dois sortir du FOR, puisque le FOR fait toutes les boucles. Le FOR est équivalent à:

  1. boucle:
  2. if [fichier pas fini d'être lu] (
  3. [Lecture de la ligne courante]
  4.  
  5. [Le contenu du FOR]
  6.  
  7. [Passage à la ligne suivante]
  8.  
  9. goto boucle
  10. )
15 Janvier 2006 14:05:26

J'ai fait ce que tu m'a di et sa marche :-D enfin plus ou moin .... il y a un petit problem que je n'ai toujours pas résolu .....

Bon dis moi pourquoi ceci ne marche pas :

  1. dir /s /b "C:\*%nom%*">>search.txt
  2. echo fin>>search.txt
  3. pause
  4. for /F "tokens=1,1* delims=" %%i in (search.txt) do (
  5. if "%%i"=="fin" goto non
  6. echo .


ma variable "nom" est bien déclaré elle équivaut à 123 sa marche jusqu'a la pause après dès que le for commence ma fenetre "dos" se ferme !! Mais les nom sont bien présent dans le fichier search.txt

Tu peux m'éclairer ??

merci
a b L Programmation
15 Janvier 2006 18:24:08

Fait des echo partout pour comprendre :-)

  1. set /A ligne=0
  2. for /F "tokens=1,1* delims=" %%i in (search.txt) do (
  3. set /A ligne+=1
  4. echo Ligne %ligne% : %%i, %%j, %%k
  5. if "%%i"=="fin" goto non
  6. echo .
  7. )
  8.  
  9. non:
  10. echo fini
  11. pause

15 Janvier 2006 21:45:18

Oui ok !! Non mais c'est bon j'ai trouvé. Enfaite sa vien de plus haut ....

Esque tu saurais comment verifier la taille d'un fichier ou l'afficher ?? :-?

Merci !! Pour tout !!
a b L Programmation
15 Janvier 2006 22:43:53

avec un DIR, le FOR avec "tokens", un "skip" pour enlever les premières lignes
et tu as tous les attributs des fichiers ;-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS