我的批处理文件(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
添加注释会更容易,这样就不会出现歧义,但我确实发现:
样式更容易阅读。
:
是有效的驱动器。就像c:
或d:
一样,但字母是:
因此,您的行正在尝试从当前驱动器更改为驱动器:
示例:尝试subst::c:\
,然后尝试dir::\
这是批处理代码块中的障碍效应。
在代码块中,一行中的标签总是需要具有完全不同语法规则的辅助行(对于辅助行)。
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代码是这样的 执行此操作时,出现此错误 谁能告诉我为什么会遇到这样的问题。为了使其起作用,我需要在代码中进行哪些更改? 问题答案: 假设位于中,则能够找到它,如果没有,则需要提供到它的完全限定路径,例如,假设已安装在其中,则需要使用类似… 就个人而言,我建议您使用它,因