Windows Cmd循环名称和创建文件夹
我试图找出如何在Windows批处理文件中创建一定数量的文件夹。我想询问用户需要多少文件夹,然后使用收集到的数字来循环询问这些文件夹的名称,并生成它们。以下是我到目前为止的情况: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
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!"
)