任何人都可以解释 cmd.exe 和 gzip 的这种奇怪的变量扩展行为吗?
我在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己找到了答案。
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.