J'obtiens "/ était inattendu à ce moment." en utilisant la boucle ci-dessous pour certains cas seulement.
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
echo Inside Loop
echo %%m
)
J'appelle ce fichier batch à partir d'un autre fichier batch en boucle. Donc, à chaque fois, le contenu du fichier.txt doit être changé.
Le contenu du fichier pose-t-il un problème?
Ceci est le script complet:
echo off
SET FileName=%2
SET NUM=%3
:label
echo.
echo Parsing file.txt file
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
echo Inside Loop
SetLocal EnableDelayedExpansion
echo %%n
SET str=%%m
SET "Number=!str::="^&REM #!
IF "!NUM!"=="" SET NUM="!number!"
if !number! GEQ !NUM! (
if /I not "!str:(ind)=!"=="!str!" (
echo It contains IND
) else >>"!FileName!" echo %1;!str!
echo %%n>Label_Name.txt
goto label
)
endlocal
)
:end
batch-file
utilisateur1553605
la source
la source
Réponses:
Sans aucune indication du contenu de votre fichier ou des paramètres avec lesquels vous exécutez ce lot, ce n'est que pure conjecture, mais je soupçonne cette ligne:
qui sera mis
NUM
à une valeur citée.Peut-être un meilleur code serait
mais aussi - vous utilisez un fichier
GOTO label
dansSETLOCAL enabledelayedexpansion
lequel AFAIAA NE met PAS fin à l'LOCAL
environnement, par conséquent, tous les traitements ultérieurs seront effectués avec leSETLOCAL
etdelayedexpansion
en vigueur. Possible de ré-exécuterSETLOCAL Enable...
plusieurs fois, en construisant de plus en plus de profondeur de l'environnement local .... Meilleur IMHO fixé.la source
Setlocal
entraînera une erreur de débordement(ind)
sa parenthèse fermante peut être interprétée comme la fin de lado (
par exemple. Essayez^)
dans cette situation, qui dit «au sens littéral et non spécial», mais «leSETLOCAL
problème que j'ai mentionné doit être résolu. MieuxEDIT
vaut utiliser les nouvelles données (paramètres) dans votre question, car elles sont plus faciles à associer et peuvent être mieux formatées. Pensez également à coller un échantillon defile.txt
- par exemple autour du problème de traitement.essaye ça:
la source
Il pourrait être utile d’en savoir plus sur ces affaires. Sans plus de détails, la question (sous sa forme actuelle) est très sujette à des réponses impliquant des spéculations.
En voici un, par exemple:
Si vous tapez FOR /?, Vous constaterez que / F est décrit dans la section qui dit:
Selon la documentation de CMD , l'exécution de CMD / E: ON activera les extensions de ligne de commande. Ensuite, la documentation tierce indique que l'exécution de CMD / Y peut être utilisée pour désactiver les extensions de commande à partir de CMD (et que CMD / X peut être utilisé pour le réactiver).
Donc, si vous trouvez que l'exécution d'un fichier de commandes fonctionne dans certains cas, mais que "FOR / F" ne semble pas reconnaître l'option dans d'autres cas, le problème peut ne pas être dû au code source que vous citez. Le problème peut être causé par l'environnement qui exécute le code.
la source