任何人都可以解释 cmd.exe 和 gzip 的这种奇怪的变量扩展行为吗?

发布于 2024-11-14 10:18:01 字数 617 浏览 1 评论 0原文

我在使用 gzip.exe 时遇到以下问题,无论是来自 UnxUtils 还是来自 GnuWin32:

set gzip=.\util\gzip.exe
%gzip% test.txt
%gzip% test2.txt

第二个 gzip 命令将发出如下警告:

gzip: .\util\gzip.exe.gz 已存在;您想覆盖(y 或 n)吗?

所以:gzip 尝试压缩自身(并且它仍然压缩 test2.txt)。 就像命令行是:.\util.gzip.exe .\util.gzip.exe test2.txt

但是,当在我的批处理中我的变量未命名为 gzip 时,它可以正常工作。

set gzip_prg=.\util\gzip.exe
%gzip_prg% test.txt
%gzip_prg% test2.txt

我完全不明白变量名的选择如何影响扩展后运行的命令行。

简而言之,当我更改变量名称时,我的批处理脚本的行为方式不同

有人对这种现象有解释吗?

I am running into the following problem with gzip.exe, be it from UnxUtils or from GnuWin32:

set gzip=.\util\gzip.exe
%gzip% test.txt
%gzip% test2.txt

The second gzip command will issue a warning like the following:

gzip: .\util\gzip.exe.gz already exists; do you wish to overwrite (y or n)?

So: gzip tries to compress itself (and it still compresses test2.txt).
It is like if the command line was: .\util.gzip.exe .\util.gzip.exe test2.txt.

However, when in my batch my variable is not named gzip, then it works correctly.

set gzip_prg=.\util\gzip.exe
%gzip_prg% test.txt
%gzip_prg% test2.txt

I do not understand at all how the choice of a variable name can have an influence on the command line that is run after expansion.

In short, my batch script behaves in a different way when I change the name of a variable!

Has anyone an explanation for this phenomenon?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淑女气质 2024-11-21 10:18:01

我自己找到了答案。

gzip.exe 读取 GZIP 环境变量 有助于设置选项。

在这里,gzip 读取环境变量并认为它必须压缩自身。

I found the answer myself.

gzip.exe reads the GZIP environment variable that helps setting options.

Here, gzip reads the environment variable and considers therefore that it has to compress itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文