/ était inattendu à cette époque


1

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

Cela ne peut pas être le code à l'origine de l'erreur. Le contenu ne peut déclencher aucune erreur dans cette partie du code.
Jeb

avez-vous installé cygwin?

@Dewfy. pas de cygwin non installé

Réponses:


1

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:

IF "!NUM!"=="" SET NUM="!number!"       

qui sera mis NUMà une valeur citée.

Peut-être un meilleur code serait

if not defined num set "num=!number!"

mais aussi - vous utilisez un fichier GOTO labeldans SETLOCAL enabledelayedexpansionlequel AFAIAA NE met PAS fin à l' LOCALenvironnement, par conséquent, tous les traitements ultérieurs seront effectués avec le SETLOCALet delayedexpansionen vigueur. Possible de ré-exécuter SETLOCAL Enable...plusieurs fois, en construisant de plus en plus de profondeur de l'environnement local .... Meilleur IMHO fixé.


C'est correct, le multiple Setlocalentraînera une erreur de débordement
jeb

Désolé Les paramètres sont,% 1: svn: //10.0.9.68: 6140 / Projects / W83627 (HFG) /,% 2: Tempfichier.txt,% 3: 956. et si je commente ") sinon >>! NomFichier! echo% 1;! str! " cette ligne. ça marche ... je ne sais pas pourquoi
user1553605

C'est compréhensible. Une parenthèse fermante doit être évitée si elle n’est pas liée à la syntaxe d’une commande. Par conséquent, (ind)sa parenthèse fermante peut être interprétée comme la fin de la do (par exemple. Essayez ^)dans cette situation, qui dit «au sens littéral et non spécial», mais «le SETLOCALproblème que j'ai mentionné doit être résolu. Mieux EDITvaut 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 de file.txt- par exemple autour du problème de traitement.
Magoo

0

essaye ça:

@echo off&setlocal
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
    set "line=%%m"
    echo Inside Loop
    setlocal enabledelayedexpansion
    echo !line!
    endlocal
)

0

pour certains cas seulement

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:

Si Command Extensions est activé, les formes supplémentaires suivantes de la commande FOR sont prises en charge:

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.