SET

SET - Shell/Batch - Programmation

Marsh Posté le 07-05-2007 à 20:03:11    

Je bloque vraiment avec mon programme.
Je désire déplacer des fichiers de plusieurs dossiers en les comparant au contenu d'un dossier ( D:\Referenz\PQFP100\ )
 
 
SET B=91
tantque
For %%i in ("D:\Referenz\KL-%B%\"*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i "D:\KL-%B%\PQFP100\" )
For %%i in ("D:\Referenz\KL-%B%\"*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i "D:\KL-%B%\PQFP100\" )
 
SET B = 1 + %B%
IF %B% LSS 92 GOTO tantque
pause
 
Une petite aide me serait utile , merci

Reply

Marsh Posté le 07-05-2007 à 20:03:11   

Reply

Marsh Posté le 07-05-2007 à 20:17:55    

Je viens de rectifier mes lignes de commande, mais mon prog ne fonctionne tjrs pas ...
SET B = 91
 
tantque
 
For %%i in ("D:\Referenz\KL-%%B\"*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i "D:\KL-%%B\PQFP100\" )
For %%i in ("D:\Referenz\KL-%%B\"*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i "D:\KL-%%B\PQFP100\" )
 
SET %%B = 1 + %B%
IF %B% LSS 92 GOTO tantque
pause

Reply

Marsh Posté le 07-05-2007 à 20:38:06    

Suis je sur la bonne voix ?
 
SET B = 91
 :start
 For %%i in (D:\Referenz\%%B\*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i D:\%%B\PQFP100\)
For %%i in (D:\Referenz\%%B\*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i D:\%%B\PQFP100\)
 
SET %%B = 1 + %B%
IF %B% LSS 92 GOTO start
pause

Reply

Marsh Posté le 08-05-2007 à 05:45:43    

C'est aussi une facon de faire.
 
Neanmoins, ta syntaxe de set n'est pas bonne.
 
Ce sera plutot  
set /a b=%b%+1
 
ou encore
set /a b+=1
 
Attention, il faut utiliser %b% et non pas %%b.
 
b = une variable
%b% = la valeur de la variable b
%%i = l'indice d'une boucle (%i si directement a la ligne de commande)
 
Sinon, tes deux boucles for sont les memes ou je me trompe ? ;)

Reply

Marsh Posté le 08-05-2007 à 18:06:59    

J'ai suivi tes conseils très précieux, mais j'ai encore un petit problème. Peux tu juste constater mes instructions pour voir si mon erreur est flagrande ? En tous cas, merci de prendre de ton temps pour m'aider.
 
set b=91
:start
For %%i in (D:\Referenz\KL-%B%\*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i D:\KL-%B%\PQFP100\)
For %%i in (D:\Referenz\KL-%B%\*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i D:\KL-%B%\PQFP100\)
 
set /a b+=1
IF %B% LSS 92 GOTO start

Reply

Marsh Posté le 08-05-2007 à 19:16:58    

Essaye ca:
 

Code :
  1. SET b=91
  2. :START
  3.     FOR %%i IN (D:\Referenz\KL-%b%\*.*) DO IF EXIST "D:\Referenz\PQFP100\"%%~nxi MOVE /Y %%i D:\KL-%b%\PQFP100\ & SET /A b+=1
  4.     GOTO:CHECK
  5. :CHECK
  6.     IF %b% LSS 92 GOTO:START


 
Mais je comprend pas trop ce que tu veux faire.


Message édité par armyman le 08-05-2007 à 19:17:28
Reply

Marsh Posté le 08-05-2007 à 20:26:08    

Voici mon probleme:
J'ai un dossier contenant des fichiers models
D:\Referenz\PQFP100\
Je veux déplacer les fichiers se trouvant dans le dossier
D:\Referenz\KL-82\*.*
en les comparant au dossier D:\Referenz\PQFP100\ dans
D:\KL-82\PQFP100\
ça a l'air simple, mais le probleme, c'est que je veux faire ceci
avec 50 dossiers différents ( KL-82 , KL-83 , KL-84 etc ... )
 
Bien sûr, je parviens à ce résultat en écrivant 50 lignes de commande du genre :
For %%i in (D:\Referenz\KL-82\*.*) do (if exist "D:\Referenz\PQFP100\"%%~nxi move /y %%i D:\KL-82\PQFP100\)
Mais je suis persuadé qu'il y a un moyen plus simple.
J'ai essayé ton prog, mais ça ne fonctionne pas et je ne vois pas où se situe le problème.   Merci pour ton aide en attendant

Reply

Marsh Posté le 08-05-2007 à 20:39:57    

Problème résolu
Merci beaucoup à armyman et à nglechau.
Voici donc le code qui fonctionne grâce à vous :
SET b=82
:START
FOR %%i IN (D:\Referenz\KL-%b%\*.*) DO IF EXIST "D:\Referenz\PQFP100\"%%~nxi MOVE /Y %%i D:\KL-%b%\PQFP100\
SET /A b+=1    
 
IF %b% LSS 132 GOTO:START
 
Philou

Reply

Sujets relatifs:

Leave a Replay

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