Commandes "DOS" incompréhensibles

Commandes "DOS" incompréhensibles - Win NT/2K/XP - Windows & Software

Marsh Posté le 13-03-2012 à 14:49:33    

Bonjour,
je viens vous solliciter parce que je suis face à un problème incompréhensible avec Windows XP
Je suis en train de réaliser un script, qui ligne à ligne sous cmd fonctionne.
Cependant lorsque je le lance, les commandes envoyées au DOS, ne sont pas celles qui figuent dans le fichier.
Ca n'est pas un problème d'encodage de fichier. Jugez vous même :  
 
voici mon script :
 

Code :
  1. REM @echo off
  2. C:
  3. CD "C:Program FilesMandrivaOpenSSHbin"
  4. NET USE Q: \ServeurScan  >NUL 2>&1
  5. dir E: | grep 14 > C:dire.txt
  6. TYPE c:dire.txt
  7. FOR /F "tokens=4 delims= " %i IN (c:dire.txt) DO SET DOSSIER=%i
  8. echo %DOSSIER%


Voici mon retour lorsque je lance ce fichier depuis cmd.exe :  
 

Code :
  1. C:Program FilesMandrivaOpenSSHbin>REM @echo off
  2. C:Program FilesMandrivaOpenSSHbin>C:
  3. C:Program FilesMandrivaOpenSSHbin>CD "C:Program FilesMandrivaOpenSSHbin"
  4. C:Program FilesMandrivaOpenSSHbin>NET USE Q: \serveurScan   1>NUL
  5. 2>&1
  6. C:Program FilesMandrivaOpenSSHbin>dir E:   | grep 14  1>C:dire.txt
  7. C:Program FilesMandrivaOpenSSHbin>TYPE c:dire.txt
  8. 07/03/2012  09:40    <REP>          1400000
  9. dire.txt) était inattendu.
  10. C:Program FilesMandrivaOpenSSHbin>FOR /F "tokens=4 delims= " dire.txt) DO
  11. SET DOSSIER=i


Sur cette dernière commande on voit clairement qu'il manque des caractères.
Alors pour m'oter d'un doute :  
 

Code :
  1. C:Program FilesMandrivaOpenSSHbin>type scan.bat
  2. REM @echo off
  3. C:
  4. CD "C:Program FilesMandrivaOpenSSHbin"
  5. NET USE Q: \serveurScan   >NUL 2>&1
  6. dir E: | grep 14 > C:dire.txt
  7. TYPE c:dire.txt
  8. FOR /F "tokens=4 delims= " %i IN (c:dire.txt) DO SET DOSSIER=%i


Non la syntaxe est correcte.
 
Je pige pas ...  :cry:

Reply

Marsh Posté le 13-03-2012 à 14:49:33   

Reply

Marsh Posté le 13-03-2012 à 15:04:10    

Pour aider à la compréhension le typage code m'a enlevé tous les '\'.
Au lieu de  
dir E: | grep 14 > C:dire.txt
FOR /F "tokens=4 delims= " %i IN (c:dire.txt) DO SET DOSSIER=%i
 
je souhaiterait faire :  
FOR /F "usebackq tokens=4 delims= " %i IN (`dir e: | grep 14`) DO SET DOSSIER=%i
seulement, il n'apprécie pas le pipe dans la commande, "| était inattendu".
Comment faire ?

Reply

Marsh Posté le 13-03-2012 à 15:19:08    

J'avance petit à petit.
J'arrive maintenant à ce script :  
REM @echo off
C:
CD "C:Program FilesMandrivaOpenSSHbin"
NET USE Q: \serveurScan >NUL 2>&1
FOR /F "usebackq tokens=4 delims= " %i IN (`dir e: ^| grep 14`) DO SET DOSSIER=%i
REM SET DOSSIER
echo %DOSSIER%
Q:
IF NOT EXIST Q:%DOSSIER% MKDIR Q:%DOSSIER%
 
Dont voici le résultat :  
C:Program FilesMandrivaOpenSSHbin>scan.bat
 
C:Program FilesMandrivaOpenSSHbin>REM @echo off
 
C:Program FilesMandrivaOpenSSHbin>C:
 
C:Program FilesMandrivaOpenSSHbin>CD "C:Program FilesMandrivaOpenSSHbin"
 
C:Program FilesMandrivaOpenSSHbin>NET USE Q: \ServeurScan  1>NUL 2>&1
| était inattendu.
 
C:Program FilesMandrivaOpenSSHbin>FOR /F "usebackq tokens=4 delims= "  ^| grep 14`) DO SET DOSSIER=i
 
C:Program FilesMandrivaOpenSSHbin>


Message édité par cypress124 le 13-03-2012 à 16:07:48
Reply

Marsh Posté le 13-03-2012 à 15:28:52    

si c’est exécuté dans une fichier batch, il te faut :

 
Citation :

FOR /F "tokens=4 delims= " %%i IN (c:\dire.txt) DO SET DOSSIER=%%i


il me semble


Message édité par Z_cool le 13-03-2012 à 15:29:47

---------------
#mais-chut
Reply

Marsh Posté le 13-03-2012 à 16:07:24    

Je viens seulement de comprendre que l'erreur fait référence à la commande de dessous et non pas de dessus. Qu'est ce que c'est que cette hérésie encore  :fou:  
Cela explique bien des choses...
 
Effectivement en doublant le %, ca passe mieux.
Merci beaucoup pour le coup de main, j'étais en train de m'arracher les cheveux, même si j’avançais doucement.
Et puis j'adore ta photo  :lol:

Reply

Marsh Posté le 13-03-2012 à 16:29:21    

cypress124 a écrit :

Je viens seulement de comprendre que l'erreur fait référence à la commande de dessous et non pas de dessus. Qu'est ce que c'est que cette hérésie encore  :fou:
Cela explique bien des choses...

 

Effectivement en doublant le %, ca passe mieux.
Merci beaucoup pour le coup de main, j'étais en train de m'arracher les cheveux, même si j’avançais doucement.
Et puis j'adore ta photo  :lol:


J'ai peut de mérite, voila 2 jours que je m'arrache les cheveux aussi aussi avec une Command DOS qui utilise FOR    :whistle:

 


cela dit, attention avec la déclaration de variable dans une boucle FOR.
beaucoup ont essayé, ils ont eu des problèmes.


Message édité par Z_cool le 13-03-2012 à 16:30:27

---------------
#mais-chut
Reply

Marsh Posté le 13-03-2012 à 16:36:44    

Un peut de lecture : http://www.batcher.fr/cmd/setlocal.php


---------------
#mais-chut
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed