Para loop para manipulação de texto não funciona - CMD

1

Eu tenho um arquivo abc1.txt com o seguinte conteúdo:

a1
b2
c3

Meu arquivo .CMD contém:

@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%g in (abc1.txt) do (
   set gurl=%%g
   set gfname=%gurl:~-1%
   echo %gfname%
   echo %gurl%
   echo %%g 
)
echo on

Minha saída ao executar o arquivo CMD é:

ECHO is off.
ECHO is off.
a1
ECHO is off.
ECHO is off.
b2
ECHO is off.
ECHO is off.
c3

Eu apenas não consigo entender porque as variáveis gurl e gfname não estão sendo impressas! Por favor ajude. : (

    
por user652320 14.10.2016 / 13:50

1 resposta

0

Não entendo por que as variáveis gurl e gfname não estão sendo impressas

Você tem enabledelayedexpansion , mas não está usando de expansão atrasada.

Para usar a expansão atrasada, você precisa substituir %variable% por !variable! da seguinte forma.

Arquivo em lote corrigido (test.cmd):

@echo off 
setlocal enabledelayedexpansion
@ECHO off
for /f "tokens=*" %%g in (abc1.txt) do (
   set gurl=%%g
   set gfname=!gurl:~-1!
   echo !gfname!
   echo !gurl!
   echo %%g 
)
endlocal  

Exemplo de saída:

> test
1
a1
a1
2
b2
b2
3
c3
c3

Leitura Adicional

por 14.10.2016 / 14:45