Cria apenas a pasta OR
Você precisa usar enabledelayedexpansion
.
O problema com o seu código é que dentro de um bloco de código (série de instruções com parênteses) qualquer %var%
será substituído pelo valor real da variável no tempo de análise e não na execução tempo .
Se você quiser usar o valor de uma variável de ambiente que é alterada em um loop, será necessário usar setlocal enabledelayedexpansion
e !var!
em vez de %var%
.
Aqui está uma versão corrigida do arquivo de lote:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (test.txt) do (
set first2=%%i
set first2=!first2:~0,2!
echo md "C:\Documents and Settings\someuser\Desktop\template\config\!first2!" 2>nul
type part1.txt>"C:\Documents and Settings\someuser\Desktop\template\config\!first2!\%%i"
echo.>>"C:\Documents and Settings\someuser\Desktop\template\config\!first2!\%%i"
echo Hostname=%%i.somedns.net>>"C:\Documents and Settings\someuser\Desktop\template\config\!first2!\%%i"
type part2.txt>>"C:\Documents and Settings\someuser\Desktop\template\config\!first2!\%%i"
)
Pause
endlocal
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
- para / f - Comando Loop contra os resultados de outro comando.