Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用.bat文件提示目录和md_Batch File_Command Line_Cmd_Cd - Fatal编程技术网

Batch file 使用.bat文件提示目录和md

Batch file 使用.bat文件提示目录和md,batch-file,command-line,cmd,cd,Batch File,Command Line,Cmd,Cd,我正在制作一个bat文件,提示用户输入目录,并在提示的目录中生成目录 @echo off set /p dir=enter directory: cd %dir% cd md assets cd assets md folder folder2 folder md addons cd addons md folder folder2 folder 我把这个文件放在一个桌面上,所以当我运行这个文件时,一切都发生在桌面上,而不是我提示的目录。我该怎么办?第一个建议:删除(或注释掉)您的@e

我正在制作一个bat文件,提示用户输入目录,并在提示的目录中生成目录

@echo off
set /p dir=enter directory: 
cd %dir%
cd
md assets
cd assets

md folder folder2 folder

md addons
cd addons

md folder folder2 folder

我把这个文件放在一个桌面上,所以当我运行这个文件时,一切都发生在桌面上,而不是我提示的目录。我该怎么办?

第一个建议:删除(或注释掉)您的
@echo off
,这样您就可以看到它运行时在做什么。这可能会立即清楚地说明为什么它没有像您预期的那样工作。一旦按您想要的方式运行,请将
@echo off
添加回

第二个建议:您可能需要一些验证,以确保
%dir%
可用于
cd
命令。例如,如果
%dir%
目录实际上不存在,则
cd
命令将失败。或者,如果您的输入包含一个驱动器号(例如
e:\newFolder\
),则除非您使用
/d
开关,否则
cd
命令将无法到达该位置

第三条建议:最好将路径名和路径变量用引号括起来,如下所示:

set /p "dir=enter directory:"
下面是我更喜欢的另一种方法,即避免批处理文件中的
cd
。通过一些输入验证,抛出

:SetDriveLetter
set /p "drive=enter drive letter:"
:: check for colon following drive letter, add it if it's not there
:: (add whatever other input validation you think necessary)
if not "%drive:~1%"==":" set drive=%drive%:
if not exist "%drive%\" (
    echo invalid drive. 
    goto SetDriveLetter
)
:SetDirectory
set /p "dir=enter directory:"
:: check for backslash preceding the directory, remove it if it's there
:: (add whatever other input validation you think necessary)
if ^%dir:~0,1%==^\ set dir=%dir:~1%
echo This will create folders in %drive%\%dir%\  
choice /m "Continue with this operation?"
if errorlevel 2 (
    echo Operation cancelled by user.
    goto End
)
:: You can use the `md` command to create multiple directories in one line.
:: I prefer to separate them out, one per line, for better readability.  
md "%drive%\%dir%\assets
md "%drive%\%dir%\assets\folder" 
md "%drive%\%dir%\assets\folder2" 
md "%drive%\%dir%\assets\addons"
md "%drive%\%dir%\assets\addons\folder" 
md "%drive%\%dir%\assets\addons\folder2"

:End

请给出您在“输入目录”提示下输入的示例。从这里回头看有点困难…谢谢,我以前从未真正使用过cmd,这就是我所知道的。但是,我试图运行您的代码,但它不起作用,我认为问题始于
SetDirectory
@user3761386 Oops中的
choice
。我犯了几个错误。我修好了。