我想要一个批处理文件,我可以在其中指定路径,例如 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”,它仍然是一样的。
答案 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"