1

J'essaie d'écrire une partie de mon programme de validation manuelle de document. Il s'agit d'ouvrir tous les documents pdf un par un dans le même dossier. Quand c'est ouvert je voudrais faire écho à peu de possibilités pour l'utilisateur. Ici commence le problème. J'ai environ 180 choix possibles. Je pensais demander la première lettre de choix. Ensuite, il fera écho à tous les choix avec commencé par lettre X et l'utilisateur doit simplement entrer le numéro de ce choix. Ainsi, par exemple, nous avons: 1. Asomething 2. Asomename 3. Asomenametoo 4. bname 5. bname 2 6. bname 3(Windows Batch File) Instruction IF dans FOR LOOP

Je veux utilisateur de choisir la première lettre et imprimer des choix possibles. Lorsque le choix est fait, le programme doit ajouter une chaîne au fichier txt avec le même nom dans le même dossier. J'ai un problème avec l'instruction IF dans la boucle FOR. Je voulais utiliser goto mais je ne peux pas le faire dans la boucle FOR.

Je peux configurer toutes les chaînes pour chaque numéro avant. Par exemple: Lorsque vous choisissez 1, il ajoutera SomeString à txt. Il est important d'utiliser l'option de choix pour éviter toute faute de frappe. Est-ce que quelqu'un connaît un autre moyen de le faire à l'intérieur de la boucle FOR?

CODE:

setlocal enabledelayedexpansion 
FOR %%b IN (c:\test\*.txt) DO (
IF "%ERRORLEVEL%"=="0" ECHO Document will open now... 
start Acrobat.exe %%b.pdf 
ECHO 1. Sample 1 
ECHO 2. Sample 2 
set /p choice= Please enter number: 
call :OPTION 
ECHO !choice! >> %%b 
PAUSE 
taskkill /IM Acrobat.exe >> c:\test\log\temp.txt 
) 
PAUSE 
GOTO MENU 
:OPTION 
IF !choice!==1 SET /A !choice!==MNV666 
IF !choice!==2 SET /A !choice!==MNV777 
GOTO:EOF 
+0

Copie possible de [vérifier la condition "IF" dans la boucle FOR (batch/cmd)] (http://stackoverflow.com/questions/1163938/check-if-condition-inside-for-loop-batch-cmd) –

Répondre

1

Je vais avoir du mal à comprendre le problème que vous rencontrez, mais il semble que tous les énoncés suivants les IF doivent tous être des conditions du IF, non seulement le ECHO déclaration. Pour cela, vous pouvez mettre tout le bloc entre parenthèses comme ceci:

setlocal enabledelayedexpansion 
FOR %%b IN (c:\test\*.txt) DO (
    IF "%ERRORLEVEL%"=="0" (
     ECHO Document will open now... 
     start Acrobat.exe %%b.pdf 
     ECHO 1. Sample 1 
     ECHO 2. Sample 2 
     set /p choice= Please enter number: 
     call :OPTION 
     ECHO !choice! >> %%b 
     PAUSE 
     taskkill /IM Acrobat.exe >> c:\test\log\temp.txt 
    ) else (
     goto :EOF REM Just an example of else 
    ) 
) 
PAUSE 
GOTO MENU 
:OPTION 
IF !choice!==1 SET /A !choice!==MNV666 
IF !choice!==2 SET /A !choice!==MNV777 
GOTO:EOF 

Avez-vous d'avoir un problème en utilisant goto dans la boucle FOR?