当前位置: 首页 > 知识库问答 >
问题:

意外“系统找不到指定的驱动器。”批处理文件

上官联
2023-03-14

我的批处理文件(Windows 7 x64)有问题。我成功地将其简化为以下内容(有两行空评论;是否有实际评论似乎无关紧要):

@echo off

if /i [%1]==[] (
    echo A
    ::
    ::
    echo B
)

将其放入批处理文件中,然后在没有参数的情况下运行它,会产生以下输出:

A
The system cannot find the drive specified.
B

删除::行之一,或删除周围的if,可以修复问题,以便获得预期的输出:

A
B

这是怎么回事?它为什么要找驱动器?

编辑

感谢您对far的回复。所以我的问题可以归结为:

确定是指“注释开始”还是“驱动器号冒号”的规则是什么?

也许切换回REM添加注释会更容易,这样就不会出现歧义,但我确实发现样式更容易阅读。

共有2个答案

席安康
2023-03-14

是有效的驱动器。就像c:d:一样,但字母是

因此,您的行正在尝试从当前驱动器更改为驱动器

示例:尝试subst::c:\,然后尝试dir::\

管梓
2023-03-14

这是批处理代码块中的障碍效应。

在代码块中,一行中的标签总是需要具有完全不同语法规则的辅助行(对于辅助行)。
SO:goto命令不起作用

第二行必须是命令或简单标签,但不能是括号、双冒号或附加括号的内部命令。

MC ND解释说这里使用的就像普通的驱动器号一样,这是真的
但只有在第二行中,即使您可以通过subst::C:\来抑制错误,该行也像标签一样处理(您不能启动任何东西)。

subst :: C:\
(
:label
::\windows\system32\calc.exe
)

第二行接受

不合格样品

(
:Label at the end fails
)

(
:label
  ( 
    echo new Block fails
  )
echo ...
)

(
:label
:: Double colon fails
)

(
:label
echo( fails also, as now a file named "echo(" is searched for execution
)

而现在正在工作的

(
::Works
:with a "normal" label in the second line
)

(
:But this label! & echo This will not echo'd
:but & echo You can see this !
)

(
:label
echo or a simple command works too
)

有时::用作注释样式,如果您不关心辅助行,这可能会导致块内出现问题。

编辑:回答第二个问题

确定::是指“注释开始”还是“驱动器号冒号”的规则是什么?

第一个::始终是注释或标签,在下一行中始终是驱动器号冒号

 类似资料:
  • 问题内容: 我有一个名为 的文件。 它与我的文件位于同一目录中。 但是,当我尝试通过以下代码访问它时,找不到此文件,发生错误: 这是我的代码: 问题答案: 直接将word.txt作为项目根文件夹的子级和src的对等方放置 免责声明:我想解释一下为什么这种方法适用于这种特殊情况,以及为什么它可能不适用于其他情况。 工作原理: 使用或任何其他变体时,你正在文件系统上相对于“工作目录”查找文件。工作目录

  • 问题内容: 我收到以下错误 但我可以肯定地说,我已经在src,bin和根目录下创建了一个in.txt文件。我还尝试在主要参数中指定完整目录,但仍然无法正常工作。为什么Eclipse不选择它? 问题答案: 我获取了您的代码,并使用以下命令行参数执行了该代码: 它完全没有问题。检查您的命令行。

  • 问题内容: 我正在制作一个打开并读取文件的程序。这是我的代码: 但是当我跑步时,出现以下错误: 我和位于同一目录中的以下位置: 我想知道我在做什么错? 问题答案: 我已经复制了您的代码,并且运行正常。 我怀疑您在hello.txt的实际文件名中仅存在一些问题,或者您在错误的目录中运行。考虑通过@ Eng.Fouad建议的方法进行验证

  • 我有一个名为""的文件。 它与我的< code>java文件在同一个目录中。 但是,当我尝试在以下代码中访问它时,会发生此文件未找到错误: 这是我的代码:

  • 我是编程新手。我最近尝试下载开源软件的源代码并设置环境。但是,当我第一次尝试运行构建时,我看到以下问题: 执行失败:Java . io . io异常:无法运行程序“unzip”(在目录中)....\"): CreateProcess error=2,系统找不到java.lang.ProcessBuilder.start中指定的文件 有什么解决这个问题的技巧吗? 据我所知,它无法成为文件: 在哪里查

  • 问题内容: 我正在用Java编写一个程序,该程序将执行winrar并将一个供我使用的jar文件解压缩到该文件夹​​中。我的Java代码是这样的 执行此操作时,出现此错误 谁能告诉我为什么会遇到这样的问题。为了使其起作用,我需要在代码中进行哪些更改? 问题答案: 假设位于中,则能够找到它,如果没有,则需要提供到它的完全限定路径,例如,假设已安装在其中,则需要使用类似… 就个人而言,我建议您使用它,因