为什么这个批处理脚本会创建看似随机的目录?

时间:2012-03-29 00:33:38

标签: batch-file

我正在玩并执行以下.bat

@echo off
mkdir %~dp0
pause

这在批处理位置创建了两个目录:

  • “和”
  • “设置”(在此内部:“Usuario”,inisde this“Escritorio”,inisde this“123”)

注意:我从“123”目录

执行批处理

我想要一些背景来了解刚刚发生的事情

2 个答案:

答案 0 :(得分:3)

mkdir命令使命令行上指定的所有目录(以空格分隔)。例如,

mkdir foo bar

将创建目录foo bar。在您的情况下,参数为C:\Documents and Settings\Usuario\Escritorio\123,相当于:

mkdir C:\Documents and Settings\Usuario\Escritorio\123

由于mkdir不知道任何不同,因此它认为您要创建名为的三个目录:

  • C:\Documents
  • and
  • Settings\Usuario\Escritorio\123

您可以尝试:

mkdir "%~dp0"

并查看双引号是否有帮助。

答案 1 :(得分:1)

由于您在C:\ Documments and Settings ...中执行了它,但尚未对其进行转义,因此它会根据空格拆分路径:

C:\Documents and Settings\...

分为"C:\Documents""and""Settings\..."

如果你使用"""%~dp0"来逃避它,那将会有效:它将扩展为"C:\Documments and Settings\...",不会被拆分