Tom's Guide > Forum > Programmation > Script Batch marche pas !! Pourquoi ?? [BATCH]
Script Batch marche pas !! Pourquoi ?? [BATCH] - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 :

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

Répondre à CRicky

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 ;-)

Répondre à Dark_Silver

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

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



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

Code :
  1. boucle:
  2. if [fichier pas fini d'être lu] (
  3. [Lecture de la ligne courante]
  4. [Le contenu du FOR]
  5. [Passage à la ligne suivante]
  6. goto boucle
  7. )

Répondre à CRicky

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 :

Code :
  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

Répondre à Dark_Silver

Fait des echo partout pour comprendre :-)

Code :
  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. non:
  9. echo fini
  10. pause


Répondre à CRicky

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

Répondre à Dark_Silver

avec un DIR, le FOR avec "tokens", un "skip" pour enlever les premières lignes
et tu as tous les attributs des fichiers ;-)

Répondre à CRicky
Tom's Guide > Forum > Programmation > Script Batch marche pas !! Pourquoi ?? [BATCH]
Aller à :

Il y a 1666 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens