在输入目录中批量创建文件夹

时间:2017-04-17 15:56:45

标签: batch-file

我想要一个批处理文件,我可以在其中指定路径,例如 C:\ Users \ Munch \ Desktop \ All Files \ 然后它将在该指定目录中创建一个文件夹。

目前所做的只是在我的桌面上创建文件夹,在输入中提供名称Im。例如,如果在我的输入“All Files \ Development”中输入,它将在我的桌面上创建两个名为“All”和“Files”的文件夹

@echo off
color 0C

:main
cls
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
set /p dir=Enter directory:
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
goto create
pause

:create

md "C:\Users\Munch\Desktop\%dir%\new"
pause

如果我将md行更改为

md "\%dir%\new"

然后输入我的批输入“C:\ Users \ Munch \ Desktop \ All Files”,它仍然是一样的。

2 个答案:

答案 0 :(得分:0)

您的问题是md / mkdir命令的路径被指定为“root-relative” - 也就是说,您有驱动器规范或反斜杠作为第一个字符路径。

相反,请尝试省略,并使用

@echo off
color 0C

:main
cls
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
set /p dir=Enter directory:
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
goto create
pause

:create

md "%dir%\new"
pause

没有前导\C:\...

需要注意的是,如果您不提供完整路径(从\开始或驱动器[C:\]的根目录),则将在相对路径中创建新目录 - 也就是说,如果您在C:\FOO,并且在调用提示时调用批处理文件并输入BAR\BAZ\QUUX,则将创建的文件夹为C:\FOO\BAR\BAZ\QUUX\NEW。如果您提供驱动器但不提供驱动器的根目录(例如,D:BAR\BAZ\QUUX),则将相对于该驱动器上的当前目录创建新文件夹(例如,如果{{1上的当前目录) } {是D:,创建的文件夹为D:\YOTTA)。

答案 1 :(得分:0)

您的问题是您显然是在所需目录名周围输入引号。

因此,正在执行的实际命令是

md "C:\Users\Munch\Desktop\"All Files\Development"\new"

被解释为md "C:\Users\Munch\Desktop\"All Files\Development"\new"

因此正在创建两个目录。

真正简单的解决方案是省略引号。

如果您忘记,程序化解决方案是在dir命令中删除引号md

md "U:\Users\Munch\Desktop\%dir:"=%\new"