SET - Shell/Batch - Programmation
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
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
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 ?
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
Marsh Posté le 08-05-2007 à 19:16:58
Essaye ca:
Code :
|
Mais je comprend pas trop ce que tu veux faire.
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
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
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