我正在尝试弄清楚如何在Windows批处理文件中创建一定数量的文件夹。我想问用户他们想要多少文件夹,然后使用收集的数字来循环询问这些文件夹的名称并制作它们。以下是我到目前为止的情况:
pushd C:\Users\%username%\Desktop
set /p FolderLoop="How many folders?: "
for /l %%x in (1, 1, %FolderLoop%) do (
set /p folder="Folder: " %%x
md %folder% %%x
)
我一直存在的问题是我无法使用正确的收集名称制作文件夹。到目前为止,我最接近的是创建适当数量的文件夹,但使用基于FolderLoop变量的顺序数字名称(1,2,3等)。
答案 0 :(得分:2)
您需要阅读有关delayedexpansion
在块语句(a parenthesised series of statements)
中,解析整个块并执行然后。块中的任何%var%
将在解析块时被该变量的值替换 - 在块执行之前 - 同样的事情适用于{{1 }}
在块语句FOR ... DO (block)
中,应使用(a parenthesised series of statements)
语句而不是断标签注释表单(REM
),因为标签终止块,使:: comment
混淆。< / p>
因此,cmd
将在遇到IF (something) else (somethingelse)
时使用%variables%
的值执行。
解决此问题的两种常见方法是1)使用IF
并使用setlocal enabledelayedexpansion
代替!var!
来访问已更改的%var%
或2}值以进行调用一个子程序,用于使用更改的值执行进一步处理。
请注意使用显示var
更改值的CALL ECHO %%var%%
。 var
显示,但遗憾的是RESETS错误级别。
答案 1 :(得分:1)
setlocal enabledelayedexpansion
pushd C:\Users\%username%\Desktop
set /p FolderLoop="How many folders?: "
for /l %%x in (1, 1, %FolderLoop%) do (
set /p "folder=Folder: "
md "!folder!"
)
(%%x
之后的set /p
什么也没做。我删除了它。我也从md
删除了它,你不需要它 - 除非你想让计数器成为其中的一部分foldername。)