批处理文件参数中的百分号(%和%%)是什么意思?

批处理文件参数中的百分号(%和%%)是什么意思?

我想我遗漏了一些东西,因为我似乎找不到这是什么意思。

例子:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

该行应该使用命令行版本来7zip压缩单个文件夹,但我不明白%%A在这种情况下它的含义。

答案1

for命令需要一个占位符,以便您可以传递变量以供稍后在查询中使用,我们告诉它使用占位符%A,您看到的代码使用的原因%%A是因为在批处理文件中(我假设您在那里找到它)%具有特殊含义,因此您必须执行两次,%%以便将其变成单个%传递给for命令

要真正分解该命令的作用,该命令分为两个部分:

 for /D %%A in (*) do .....

这部分所说的是针对当前文件夹中的每个文件夹执行以下命令,并将其替换%%A为当前处理的文件夹的名称。

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

这部分说的是执行命令并用我们正在处理的当前记录"\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"替换两个。%%A

答案2

它是一个变量。

该特定示例使用FOR 循环的目录选项,遍历目录并将它们分配给 %%A。

这也不是命令行示例,而是批处理文件示例。在批处理文件中,您需要使用 %%A,而在命令行中,您只需使用 %A。

答案3

在您的场景中,%%A 是“for”循环迭代的占位符(/D 表示目录)。因此,循环的每次迭代中,%%A 都是目录之一。

您将在批处理代码中看到 %% 而不是 %。您将在命令提示符中看到 % 而不是 %%。

因此,请注意,如果将批处理文件代码复制到命令提示符中并使用 %% 运行它,则会出现错误,反之亦然。

相关内容