/ foi inesperado neste momento

1

Estou recebendo "/ foi inesperado neste momento." enquanto estiver usando o loop abaixo para apenas alguns casos.

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

Estou chamando esse arquivo em lote de outro arquivo em lote em um loop. Então toda vez, o conteúdo do arquivo.txt deve ser alterado.

O conteúdo do arquivo é um problema?

Este é o script completo:

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
    
por user1553605 04.06.2013 / 15:44

3 respostas

1

Sem qualquer identificação do conteúdo do seu arquivo ou dos parâmetros que você está executando este lote, é pura adivinhação, mas eu suspeito que esta linha:

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

que definirá NUM como um valor entre aspas.

Possivelmente código melhor seria

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

mas também - você está usando um GOTO label dentro de um SETLOCAL enabledelayedexpansion que AFAIAA NÃO termina o ambiente LOCAL , portanto, todo o processamento seria com o SETLOCAL e delayedexpansion em vigor. Possível re-executar o SETLOCAL Enable... várias vezes, construindo maior e maior profundidade do ambiente local .... Melhor IMHO fixo.

    
por 04.06.2013 / 17:26
0

tente isto:

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

for some cases only

Pode ser útil saber mais sobre o que são esses casos. Sem mais detalhes, a questão (em sua forma atual) é altamente propensa a respostas que envolvem especulação.

Aqui está um, por exemplo:

Se você digitar FOR / ?, verá que / F está descrito na seção que diz:

If Command Extensions are enabled, the following additional forms of the FOR command are supported:

De acordo com a documentação do CMD , executando o CMD / E: ON ativará as extensões de linha de comando. Em seguida, documentação de terceiros observa que a execução de CMD / Y pode ser usada para desativar as extensões de comando de dentro do CMD (e CMD / X podem ser usadas para reativar).

Portanto, se você descobrir que a execução de um arquivo em lotes funciona em alguns casos, mas "FOR / F" não parece reconhecer a opção em outros casos, o problema pode não ser causado pelo código-fonte real citando. O problema pode ser causado pelo ambiente que está executando o código.

    
por 30.05.2015 / 15:14

Tags