【问题标题】:Setting a directory and adding other folders inside of that directory(.bat file)设置目录并在该目录中添加其他文件夹(.bat 文件)
【发布时间】:2021-02-04 00:22:09
【问题描述】:

我需要帮助批量设置目录,然后在该目录中添加其他文件夹,但我尝试的任何代码都不起作用。在这种情况下,该文件名为“a.bat”,它需要创建一个名为“a”的目录。然后它需要在“a”目录中创建“1”、“2”和“3”(1、2和3是文件夹)。这是我的代码。每当我运行它时,它只会在我运行 a.bat 的目录中创建 4 个不同的目录。

@echo off
MD a
Set adir = C:\a
cd %adir%
MD 1
MD 2
MD 3

如果有人知道我做错了什么,如果您能提供帮助,我将不胜感激。谢谢!

【问题讨论】:

  • Batch 对 SET 语句中的空格敏感。 SET FLAG = N 将名为“FLAGSpace”的变量设置为值“SpaceN”语法SET "var=value"(其中值可能为空;在这种情况下@987654325 @ 变为 undefined) 用于确保分配的值中不包含任何杂散的尾随空格。在这种情况下,adir 不是set,正在设置“adirSpace”,因此adir 没有值,cd %adir% 变为cd
  • 还是不行。我不确定为什么,可能是因为我使用的是 MD 而不是其他东西。
  • a 将在当前目录中创建。您需要在set 命令中删除= 周围的空格才能正确设置adir。优先使用set "adir=C:\a"。现在这专门将c:\a 设置为adir,因此cd %adir% 将从当前目录切换目录C:\a,而不是子目录a。为此,您需要 set "adir=%cd%\a" - %cd% 是一个被解析为 C当前D目录的魔术变量。

标签: windows batch-file executable


【解决方案1】:

除非我在您的问题中遗漏了什么,否则有什么问题:

MD "C:\a\1" "C:\a\2" "C:\a\3"

如果你愿意,你可以通过CD /D "C:\a" 跟进。

完整示例:

@Echo Off
SetLocal EnableExtensions
Set "adir=C:\a"
MD "%adir%\1" "%adir%\2" "%adir%\3"
CD /D "%adir%"

【讨论】:

  • 只需要稍微编辑一下,但它成功了!谢谢。现在是代码:@echo off MD a Set "adir=a" MD "%adir%\1" "%adir%\2" "%adir%\3"
  • 不需要编辑任何东西,MD "%adir%\1" "%adir%\2" "%adir%\3" 在创建子目录时也会创建C:\a。这就是我这样做的原因,我的代码不需要编辑,除了2 行的双引号之间的用户可定义位置。
【解决方案2】:

Magoo 说:Batch 对 SET 中的空格很敏感。

这就是为什么使用以下语法:

set "var=value"

没有空格。

您也将目录更改为 %a%,但会定义 %adir%

set "adir=C:\a"
cd %adir%

改为

(同样重要的是:您在“C:”而不是您的工作目录中创建文件夹“a”)

【讨论】:

  • 其实定义了变量“adir[SPACE]”。并定义为具有值“[Space]C:\a”。 = 两边 的空格包含在分配中。两者都应该被删除 - 最好使用语法 set "adir=C:\a" 来防止 set 命令行上的任何尾随空格包含在分配的值中。
  • 在这种情况下我应该编辑答案吗?我对 Stack 有点陌生。还是你要编辑我的答案?
  • 当然 - 编辑答案。如果您在已编辑的答案中添加一个符号,表明它已针对 cme​​ts 进行了编辑,则更有意义,否则 cmets 看起来很奇怪。
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2011-01-09
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多