提示目录和 md 与 .bat 文件
prompt directory and md with .bat file
我正在制作一个 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
我正在制作一个 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