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

Batch file 为什么这个批处理脚本会创建看似随机的目录?,batch-file,Batch File,我在玩游戏,执行了以下.bat @echo off mkdir %~dp0 pause 这在批处理位置创建了两个目录: “和” “设置”(在该“Usuario”内,在该“Escritorio”内,在该“123”内) 注意:我从“123”目录执行批处理 我需要一些背景知识来了解刚才发生了什么mkdir命令生成命令行上指定的所有目录(用空格分隔)。比如说, mkdir foo bar 将使目录foo和bar。在您的情况下,参数是C:\Documents and Settings\Usuari

我在玩游戏,执行了以下
.bat

@echo off
mkdir %~dp0
pause
这在批处理位置创建了两个目录:

  • “和”
  • “设置”(在该“Usuario”内,在该“Escritorio”内,在该“123”内)
注意:我从“123”目录执行批处理


我需要一些背景知识来了解刚才发生了什么

mkdir命令生成命令行上指定的所有目录(用空格分隔)。比如说,

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

mkdir C:\Documents and Settings\Usuario\Escritorio\123
由于
mkdir
不知道有什么不同,它认为您需要创建三个名为:

  • C:\Documents
  • Settings\Usuario\Escritorio\123
你可以试着做:

mkdir "%~dp0"

并查看双引号是否有用。

mkdir命令生成命令行上指定的所有目录(用空格分隔)。比如说,

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

mkdir C:\Documents and Settings\Usuario\Escritorio\123
由于
mkdir
不知道有什么不同,它认为您需要创建三个名为:

  • C:\Documents
  • Settings\Usuario\Escritorio\123
你可以试着做:

mkdir "%~dp0"

并查看双引号是否有用。

由于您在C:\Documments and Settings…(文档摘要和设置…)中执行了它,但没有对其进行转义,因此它正在基于空格分割路径:

C:\Documents and Settings\...
被拆分为
“C:\Documents”
“和”
“Settings\…”


如果您使用
对其进行转义,即
“%~dp0”
应该可以工作:它将扩展到
“C:\documents and Settings\…”
,由于您在C:\documents and Settings…(但尚未转义)中执行它,因此不会拆分它,它将基于空格拆分路径:

C:\Documents and Settings\...
被拆分为
“C:\Documents”
“和”
“Settings\…”


如果您使用
来转义它,即
“%~dp0”
应该可以工作:它将扩展到
“C:\documents and Settings\…”
,它不会被拆分,
echo%~dp0
向您显示了什么?@GregHewgill
“C:\documents and Settings\Usuario\Escritorio\123\”
,并且只为记录,“Escritorio”在西班牙文中表示桌面,
echo%~dp0
向您展示了什么?@GregHewgill
“C:\Documments and Settings\Usuario\Escritorio\123\”
请注意,“Escritorio”在西班牙文中表示桌面+1。用鼠标点击
submit
按钮击败我(你的答案也比我的好):)谢谢我真的很讨厌在我的电脑上存储随机的东西(我从来没有想到它也创建了
C:\Documents
,现在我删除了它)最后一件事,我创建了var
set cur=“%~dp0”
,我像这样使用
mkdir%cur%bananas
,用
“C:\path\'bananas”代替“C:\path\bananas”有问题吗“
?我认为这不是问题,但我不确定。你得试试看。用鼠标点击
submit
按钮击败我(你的答案也比我的好):)谢谢我真的很讨厌在我的电脑上存储随机的东西(我从来没有想到它也创建了
C:\Documents
,现在我删除了它)最后一件事,我创建了var
set cur=“%~dp0”
,我像这样使用
mkdir%cur%bananas
,用
“C:\path\'bananas”代替“C:\path\bananas”有问题吗“
?我认为这不是问题,但我不确定。你得试试。