/ був несподіваним у цей час


1

Я отримую "/ було несподівано в цей час". при цьому використовуйте нижче для циклу лише для деяких випадків.

for /f "tokens=1,* delims=;" %%m in (file.txt) do (
    echo Inside Loop
    echo %%m
)

Я викликаю цей пакетний файл з іншого пакетного файлу в циклі. Тому щоразу зміст файлу.txt слід змінювати.

Чи є проблема вмісту файлу?

Це повний сценарій:

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

Це не може бути кодом, що викликає помилку. Вміст не може викликати помилки в цій частині коду.
1313

у вас встановлено cygwin?

@Dewfy. жоден cygwin не встановлений

Відповіді:


1

Без будь-якої ідентифікації вмісту вашого файлу або параметрів, які ви виконуєте в цій партії, це чисті здогадки, але я підозрюю цей рядок:

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

який буде встановлений NUMна котирується значення.

Можливо, був би кращий код

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

але також - ви використовуєте GOTO labelвсередині SETLOCAL enabledelayedexpansionякого AFAIAA НЕ припиняє LOCALнавколишнє середовище, отже, всі терапевти, що займаються обробкою, будуть мати дію SETLOCALта delayedexpansionдію. Можливе повторне виконання SETLOCAL Enable...декількох разів, створення більшої та більшої глибини локального середовища .... Найкращий фіксований IMHO.


Це правильно, множина Setlocalпризведе до помилки переповнення
jeb

Вибачте Параметри,% 1: svn: //10.0.9.68: 6140 / Проекти / W83627 (HFG) /,% 2: Tempfile.txt,% 3: 956. і якщо я коментую ") інше >>! Ім'я файлу! echo% 1;! str! " ця лінія. його працює ... я не знаю, чому
user1553605

Це зрозуміло. Круглі дужки потрібно уникати, якщо це не пов'язано з синтаксисом команди - тому, (ind)можливо, його дужки, що закриваються, трактуються як кінець, do (наприклад. Спробуйте ^)в цій ситуації, де сказано "буквальне, а не особливе значення") "" Тим не менше, SETLOCALпроблему, про яку я згадав, потрібно вирішити. Найкраще до EDITнових даних (параметрів) у вашому запитанні, де їх легше пов’язати та їх можна краще відформатувати. Також є ідея вставити зразок file.txt- скажімо, де виникає проблема з обробкою.
Магуо

0

спробуйте це:

@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

лише для деяких випадків

Можливо, буде корисно дізнатися більше про те, що це за справи. Без додаткових подробиць, питання (в його теперішній формі) дуже схильне до відповідей, що передбачають спекуляцію.

Ось, наприклад:

Якщо ви введете FOR /?, Ви побачите, що / F описано в розділі, що говорить:

Якщо розширення команд увімкнено, підтримуються такі додаткові форми команди FOR:

Відповідно до документації CMD , запуск CMD / E: ON дозволить розширити командний рядок. Потім, стороння документація зазначає, що запуск CMD / Y може бути використаний для відключення розширень команд зсередини CMD (а CMD / X можна використовувати для повторного включення).

Тож якщо ви виявите, що запуск пакетного файлу працює в деяких випадках, але "FOR / F", схоже, не розпізнає цю опцію в інших випадках, проблему може не викликати фактичний вихідний код, який ви цитуєте. Проблему може спричинити середовище, в якому працює код.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.