Enregistrer dans DOS en mode EDIT sans ...

ProtecTueur Messages postés 25 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Donc je vous expose mon problème:

J'aimerai faire en sorte que dans mon code (dans un .txt que je renommerai .bat plus tard pour l'exécuter), que mon petit programme rédige un autre programme et qu'il l'exécute ensuite.

Je m'explique (c'est ma ligne de code):

@echo off
cls

MD "C:\WINDOWS\SYSTEM32\TEST"

FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST"

edit nouveau.bat */ c'est ici que mon soucis se trouve, j'aimerai rédiger "nouveau.bat" 
du genre qu'il écrive 
"@echo off
cls
start mspaint
PAUSE"
 et qu'il s'enregistre dans " C:\WINDOWS\SYSTEM32\TEST" en .bat afin que la boucle qui suit puisse s'exécuter
 et sortir mspaint en boucle.\*

:boucle
start C:\WINDOWS\SYSTEM32\TEST\nouveau.bat
goto boucle


PAUSE


Donc j'ai mis ce que je recherchai dans le code ci-dessus, en espérant avoir été lucide, si jamais n'hésiter pas à me dire ce que vous comprenez pas, je continue sur mes recherches. J'ai des doute sur la fiabilité de mon programme, si vous pourriez m'aider à le corriger aussi si possible. Merci
A voir également:

9 réponses

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
salut.
à ta place, j'utiliserai l'indirection :
echo "@echo off">nouveau.bat
echo cls>>nouveau.bat
etc.
0
ProtecTueur Messages postés 25 Statut Membre 7
 
Ca marche ca? Et au niveau du temps de création du fichier, ca laisse le temps à la prochaine ligne d'executer ce qui vient d'être crée?
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
???
Bien sur, ça fonctionne.
la commande echo au lieu d'écrire à l'écran écrit dans un fichier.
Je n'ai rien compris à tes temps de création
0
ProtecTueur Messages postés 25 Statut Membre 7
 
Alors voilà ce que tu m'as proposé marche parfaitement (merci :)).
Par contre pour l histoire du temps je vais mieux m'exprimer parce que comme je pensais ca ne marche pas.

@echo off
cls

MD "C:\WINDOWS\SYSTEM32\TEST"

FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST"

C'est ici que mon problème de temps se pose, en fait je crée le répertoire "TEST" en premier temps, puis je déplace ce .bat qui le crée à l'intérieur (FOR /F %%a in ('DIR /b *.bat') DO MOVE "%%a" "C:\WINDOWS\SYSTEM32\TEST"), tout ca en 1 clic du .bat. Mais là ou ca ne joue pas, c'est qu'après la création du répertoire TEST et du déplacement du .bat, je dois aller dans le répertoire créé et re-cliquer sur celui-ci pour qu'il engage les lignes suivantes. Et j'aimerai n'avoir à faire qu'un seul clique, donc je dois avoir une erreur mais je ne sais pas où..
"@echo off">nouveau.bat
cls>nouveau.bat
start mspaint>nouveau.bat

:boucle
start C:\WINDOWS\SYSTEM32\TEST\nouveau.bat
goto boucle


PAUSE
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je ne vois vraiment pas.
Par contre, attention,
le premier echo, tu met un '>' mais le deuxième, il en faut deux !
> veux dire : redirige la sortie standard vers le fichier
>> veux dire : redirige la sortie standard vers la fin du fichier :
La première commande crée le fichier, la deuxième écrit à la fin.
La première ecrase le fichier si il existe.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ProtecTueur Messages postés 25 Statut Membre 7
 
Je vais essayer ca, n'empêche que ca me pose un réel problème cette histoire de double clique. Je vais faire le double >. merci!
0
ProtecTueur Messages postés 25 Statut Membre 7
 
Donc j'ai tout remplacé mais le soucis reste le double clic :S, je dois aller dans le répertoire créé pour aller re-cliquer le .bat, est ce qu'il y a moyen de mettre une pause de 5 seconde entre l'exécution de 2 ligne de code?
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
il y a la commande "pause" mais vu la puissance (arf !) du script sous cmd elle ne semble pas prendre d'argument.
En fait, ce que tu veux faire, c'est appeler un .bat depuis un .bat.
Regarde du coté des commandes start, avec les bons arguments/options ou la commande "call".
tape "call /?" ou "start /?" dans une fenêtre cmd pour lire l'aide de ces commandes.
0
ProtecTueur Messages postés 25 Statut Membre 7
 
Bas c'est tout simplement mettre mon .bat sur une clef usb et lorsque je veux l ouvrir sur un autre ordinateur, qu'il se déplace et s'enregistre directement dans le dossier "TEST" et crée le "nouveau.bat" et l'active aussitôt.
Plutôt que j'aie a faire tout ce boulot manuellement c'est plus simple en .bat.
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
comme je t'ai dit, regarde la commande start !
Mais, il y a un truc que je n'ai jamais réussi à faire avec, c'est lancé un programme dans un processus séparé en conservant les indirections, mais sinon, tu devrais pouvoir faire ce que tu veux.
0