Arquivo em lote: Loop não produzindo o valor da variável inserida no arquivo externo

0

O problema está nessa parte do código:

for /l %%x in (1, 1, %num%) do (
   set /p "inp=Enter Ext of PC: "
   echo pc-%inp%x>>"Myfile.log"
)

Aqui está o código completo:

@ECHO OFF

:: +++++++++++++++++++ MENU +++++++++++++++++++++
:menu
cls
echo.
echo 1) Add PCs to Log File
echo 2) View Log File
echo 3) Exit
echo.
goto option

:option
set /p op=Type option #:
if "%op%"=="1" goto addext
if "%op%"=="2" goto viewcnt
if "%op%"=="3" goto exit


:: ++++++++++++++++++++ OPTIONS ++++++++++++++++++++++

:addext
:: Enter Number of PCs to Add to Log File
echo.
set /p "num=Enter Num of PCs to Add: "
echo.
goto addlog

:addlog
:: Create/Clear Log File/Enter Computer Extensions/Write to Log File
cls
echo.
echo.>"Myfile.log"
for /l %%x in (1, 1, %num%) do (
   set /p "inp=Enter Ext of PC: "
   echo pc-%inp%x>>"Myfile.log"
)
echo.
pause
goto menu

:viewcnt
:: View Log File
type Myfile.log
echo.
pause
goto menu

:exit
@exit

Objetivos

Insira o número de PCs para adicionar ao arquivo de log - Works

set /p "num=Enter Num of PCs to Add To: "

Saída:

Enter Num of PCs to Add To:

Criar / Apagar Arquivo de Log (cada vez que a opção 1 do menu é escolhida) - Funciona

echo.>"Myfile.log"

Defina a variável %inp% para cada um dos Número de computadores de %num% variable - Precisa de ajuda

for /l %%x in (1, 1, %num%) do (
   set /p "inp=Enter Ext of PC: "
   echo pc-%inp%x>>"Myfile.log"
)

Saída:

Enter Ext of PC:

(itera o número de vezes que %num% é igual a)

  • Solicita a entrada da variável de extensão para o número de vezes prescrito pela entrada anterior - Works
  • Capaz de digitar em cada extensão - Works
  • Não tenho certeza do que acontece com a variável inserida - Precisa de ajuda

Grave as variáveis no arquivo de registro - Precisa de ajuda

echo pc-%inp%x>>"Myfile.log"
  • O prefixo que precede a variável mostra o número de vezes que foi inserido - Works
  • Não incluindo as variáveis inseridas - Precisa de ajuda

Visualizar arquivo de log - Works

type Myfile.log

Outras considerações:

  • pc-%inp% é o nome do computador (prefixo: pc-) seguido por (variável: %inp% / example: pc-a001 )
  • %inp% precisa ser Alphanumberic (uma carta seguida por 3 números: a001 )
por cgitech 17.05.2018 / 21:40

1 resposta

0

Aqui está o código que funciona:

SETLOCAL EnableDelayedExpansion
echo.>"Myfile.log"
for /l %%x in (1, 1, %num%) do (
   set /p "inp=Enter Ext of PC: "
   echo pc-!inp!>>"Myfile.log"
)

As alterações necessárias foram:

  • adicionando o SETLOCAL EnableDelayedExpansion
  • alterando %inp%x para !inp!

Obrigado a DavidPostill por sua ajuda

    
por 17.05.2018 / 22:38