【问题标题】:prompt directory and md with .bat file提示目录和带有 .bat 文件的 md
【发布时间】:2016-02-18 16:08:23
【问题描述】:

我正在制作一个提示用户目录的 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

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

【问题讨论】:

  • 请举例说明您在“进入目录”提示下所做的条目。从这里回头看有点困难......

标签: batch-file command-line cmd cd


【解决方案1】:

第一个建议:删除(或注释掉)你的@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,就知道这么多。但是,我尝试运行您的代码,但它不起作用,我认为问题从choice 中的SetDirectory 开始
  • @user3761386 哎呀。我在那里犯了几个错误。我修好了。
猜你喜欢
  • 2014-07-05
  • 2013-07-13
  • 2016-02-17
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多