命令行:使用 for 循环创建名称递增的目录
Command Line: Using a for loop to create directories with increasing names
我正在尝试编写执行以下操作的批处理文件:
- 提示用户创建新文件夹的目录最新
- 提示用户输入整数 limit
- 创建目录最新
- CD 最新
- FOR 循环 limit 次迭代
- 创建目录"Month " + 迭代
例如:
最新 = 报告
限制 = 12
我应该结束:
\Reports\Month 1
\Reports\Month 2
\Reports\Month 3
...
\Reports\Month12
到目前为止,这是我的代码:
setlocal enabledelayedexpansion
FOR /L %%i IN (1,1,%limit%) DO (
set "month_counter=Month %%i"
echo %month_counter%
MD %month_counter%
)
endlocal
如果我设置 limit = 12,我会收到 12 条错误消息:
Echo is off.
The syntax of the command is incorrect.
感谢您的帮助。
FOR /L %%i IN (1,1,%limit%) DO (
MD "Month %%i"
)
您遇到了标准的 delayed expansion
问题 - 关于此问题的 SO 上有数百篇文章。
在块语句 (a parenthesised series of statements)
中,解析 整个 块并执行 then。块中的任何 %var%
将被该变量的值替换 在块被解析时 - 在执行块之前 - 同样的事情适用于 FOR ... DO (block)
.
因此,IF (something) else (somethingelse)
将在遇到 IF
时使用 %variables%
的值执行。
克服这个问题的两种常见方法是 1) 使用 setlocal enabledelayedexpansion
并使用 !var!
代替 %var%
来访问 var
的更改值或 2)调用子例程以使用更改后的值执行进一步处理。
因此请注意 CALL ECHO %%var%%
的使用,它显示 var
的更改值。 CALL ECHO %%errorlevel%%
显示,但遗憾的是随后重置错误级别。
所以 - 你可以使用
set "month_counter=Month %%i"
CALL echo %%month_counter%%
如果您真的、真的想要 - 或其他技术之一,但是简单地从您的常量数据 + %%i
中的迭代计数器创建目录要容易得多,如图所示。
我正在尝试编写执行以下操作的批处理文件:
- 提示用户创建新文件夹的目录最新
- 提示用户输入整数 limit
- 创建目录最新
- CD 最新
- FOR 循环 limit 次迭代
- 创建目录"Month " + 迭代
例如:
最新 = 报告
限制 = 12
我应该结束:
\Reports\Month 1
\Reports\Month 2
\Reports\Month 3
...
\Reports\Month12
到目前为止,这是我的代码:
setlocal enabledelayedexpansion
FOR /L %%i IN (1,1,%limit%) DO (
set "month_counter=Month %%i"
echo %month_counter%
MD %month_counter%
)
endlocal
如果我设置 limit = 12,我会收到 12 条错误消息:
Echo is off.
The syntax of the command is incorrect.
感谢您的帮助。
FOR /L %%i IN (1,1,%limit%) DO (
MD "Month %%i"
)
您遇到了标准的 delayed expansion
问题 - 关于此问题的 SO 上有数百篇文章。
在块语句 (a parenthesised series of statements)
中,解析 整个 块并执行 then。块中的任何 %var%
将被该变量的值替换 在块被解析时 - 在执行块之前 - 同样的事情适用于 FOR ... DO (block)
.
因此,IF (something) else (somethingelse)
将在遇到 IF
时使用 %variables%
的值执行。
克服这个问题的两种常见方法是 1) 使用 setlocal enabledelayedexpansion
并使用 !var!
代替 %var%
来访问 var
的更改值或 2)调用子例程以使用更改后的值执行进一步处理。
因此请注意 CALL ECHO %%var%%
的使用,它显示 var
的更改值。 CALL ECHO %%errorlevel%%
显示,但遗憾的是随后重置错误级别。
所以 - 你可以使用
set "month_counter=Month %%i"
CALL echo %%month_counter%%
如果您真的、真的想要 - 或其他技术之一,但是简单地从您的常量数据 + %%i
中的迭代计数器创建目录要容易得多,如图所示。