Windows Cmd循环名称和创建文件夹

Windows Cmd循环名称和创建文件夹,windows,loops,batch-file,for-loop,cmd,Windows,Loops,Batch File,For Loop,Cmd,我试图找出如何在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 %fo

我试图找出如何在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等)

您需要:

(在
set/p
之后的
%%x
没有任何作用。我删除了它。我也从
md
中删除了它,您不需要它-除非您希望计数器成为foldername的一部分。)

您需要:


(在
set/p
之后的
%%x
没有任何作用。我删除了它。我也从
md
中删除了它,你不需要它-除非你想让计数器成为foldername的一部分。)

你需要阅读关于
延迟扩展的数百条回复中的任何一条

在块语句
(一系列带括号的语句)
中,解析整个块,然后执行。在解析块时,块内的任何
%var%
都将替换为该变量的值——在执行块之前——这同样适用于。。。DO(块)

在块语句
(括号内的一系列语句)
,应使用
REM
语句,而不是断标签备注形式(
::comment
),因为标签终止块,使
cmd
混淆

因此,在遇到
IF
时,将使用
%variables%
的值执行
IF(somethingelse)

克服此问题的两种常见方法是:1)使用
setlocal enabledelayedexpansion
!瓦尔
代替
%var%
以访问
var
的更改值,或2)调用子例程以使用更改的值执行进一步处理


因此,请注意使用了
CALL ECHO%%var%%
,它显示了
var
的更改值
CALL ECHO%%errorlevel%%
显示,但遗憾的是,随后会重置errorlevel。

您需要阅读上百条关于
delayedexpansion
的响应

在块语句
(一系列带括号的语句)
中,解析整个块,然后执行。在解析块时,块内的任何
%var%
都将替换为该变量的值——在执行块之前——这同样适用于。。。DO(块)

在块语句
(括号内的一系列语句)
,应使用
REM
语句,而不是断标签备注形式(
::comment
),因为标签终止块,使
cmd
混淆

因此,在遇到
IF
时,将使用
%variables%
的值执行
IF(somethingelse)

克服此问题的两种常见方法是:1)使用
setlocal enabledelayedexpansion
!瓦尔
代替
%var%
以访问
var
的更改值,或2)调用子例程以使用更改的值执行进一步处理


因此,请注意使用了
CALL ECHO%%var%%
,它显示了
var
的更改值<代码>呼叫ECHO%%errorlevel%%显示,但遗憾的是,随后重置errorlevel。

就是这样!非常感谢。我可以看出它基本上忽略了我试图调用的文件夹名称变量。这个修好了!(有一件事,对于其他读者来说,enabledayedexpansion中的delayed缺少了e.:)
e
inserted。。。顺便说一句,你也可以使用
%userprofile%\desktop
就是这样!非常感谢。我可以看出它基本上忽略了我试图调用的文件夹名称变量。这个修好了!(有一件事,对于其他读者来说,enabledayedexpansion中的delayed缺少了e.:)
e
inserted。。。顺便说一句,你也可以使用
%userprofile%\desktop
这是非常深入和信息丰富的。非常感谢你!这是非常深入和翔实的。非常感谢你!
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!"
)