【问题标题】:Why does this batch script create seemingly random directories?为什么这个批处理脚本会创建看似随机的目录?
【发布时间】:2012-03-29 00:33:37
【问题描述】:

我在玩耍并执行了以下.bat

@echo off
mkdir %~dp0
pause

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

  • “和”
  • “设置”(在这个里面:“Usuario”,这个“Escritorio”,这个“123”)

注意:我从“123”目录执行批处理

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

【问题讨论】:

  • echo %~dp0 向您展示了什么?
  • @GregHewgill "C:\Documments and Settings\Usuario\Escritorio\123\" 作为记录,“Escritorio”在西班牙语中的意思是桌面

标签: batch-file


【解决方案1】:

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。用鼠标点击submit 按钮打败我(你的回答也比我的要好)。 :)
  • 谢谢!我真的很讨厌在我的电脑上存储随机的东西(我从没想到它还创建了C:\Documents,现在我删除了它)
  • 最后一件事,我创建了 var set cur="%~dp0",我正在像这样使用mkdir %cur%bananas'"C:\path\"bananas' instead of '"C:\path\bananas"' 有问题吗?
  • 我认为这不是问题,但我不确定。你必须尝试一下。
【解决方案2】:

由于您在 C:\Documments and Settings... 中执行了它,但没有转义它,它正在根据空格分割路径:

C:\Documents and Settings\...

被分成"C:\Documents""and""Settings\..."

如果你用"" 转义它,即"%~dp0" 应该可以工作:它将扩展到"C:\Documments and Settings\...",不会被拆分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多