Пакетная переменная не увеличивается! - PullRequest
2 голосов
/ 23 мая 2011
SET /a _count = 1

set /p drive=Please type drive name[C/D/E/F/..]?: 
echo Creating Directory %drive%:\AKI_Data_Feeds
mkdir %drive%:\AKI_Data_Feeds

for /f %%a in (companyList.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a
mkdir %drive%:\AKI_Data_Feeds\%%a

for /f %%b in (branch1.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a\%%b
mkdir %drive%:\AKI_Data_Feeds\%%a\%%b


if "%_count%"=="1" (

for /f %%c in (branch1_1.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a\%%b\%%c
mkdir %drive%:\AKI_Data_Feeds\%%a\%%b\%%c

for /f %%e in (branch2.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a\%%b\%%c\%%e
mkdir %drive%:\AKI_Data_Feeds\%%a\%%b\%%c\%%e
)

)

SET /a _count +=1
echo %_count%

)
if "%_count%"=="2" (
for /f %%d in (branch1_2.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a\%%b\%%d
mkdir %drive%:\AKI_Data_Feeds\%%a\%%b\%%d

for /f %%e in (branch2.txt) do (
echo Creating Directory %drive%:\AKI_Data_Feeds\%%a\%%b\%%c\%%e
mkdir %drive%:\AKI_Data_Feeds\%%a\%%b\%%c\%%e
)

)

SET /a _count +=1

)

)
)

echo Successfully created.
pause  

_count не увеличивается

1 Ответ

6 голосов
/ 23 мая 2011

Вам нужно отсроченное расширение, чтобы решить эту проблему.
Поскольку все процентные переменные расширяются во время анализа блока, их значения, похоже, остаются неизменными.

При отложенном расширении переменные раскрываются во время выполнения.

setlocal EnableDelayedExpansion
set count=0
(
   set /a count+=1
   echo %count% fails
   echo !count! works
)
...