Windows 批处理脚本中的zip权限被拒绝

Windows 批处理脚本中的zip权限被拒绝,windows,cmd,zip,Windows,Cmd,Zip,我正在Windows Server 2012R2上使用zip.exe(2.31)。 我有一个很大的txt文件,我想在通过scp传输之前先压缩它。我就这样跑 zip.exe -1 -m "%DIR%\%~n1.zip" %1 其中%1是我的txt文件的完整路径。 但是这个剧本已经过时了 zip警告:忽略多个磁盘信息 zip.exe:找到20464字节的前导码 zip警告:名称不匹配:DIR\u PATH\FILE.zip zip I/O错误:权限被拒绝 但是如果我直接打字

我正在Windows Server 2012R2上使用zip.exe(2.31)。 我有一个很大的txt文件,我想在通过scp传输之前先压缩它。我就这样跑

zip.exe -1 -m "%DIR%\%~n1.zip" %1 
其中%1是我的txt文件的完整路径。 但是这个剧本已经过时了

zip警告:忽略多个磁盘信息

zip.exe:找到20464字节的前导码

zip警告:名称不匹配:DIR\u PATH\FILE.zip

zip I/O错误:权限被拒绝

但是如果我直接打字

zip.exe -1 -m DIR_PATH\FILE.zip FILE.txt 

在cmd中的
DIR\u路径
(这与我脚本中的行完全相同,因为我
echo
将它从脚本复制到cmd以直接运行),它可以正常工作


那么,为什么只有在脚本中运行此命令时才会出现错误?

此问题可能是由Windows server 2012R2的兼容性引起的。
在我将
zip.exe的兼容性设置更改为
Windows7
后,所有问题都解决了。

你能看到
%DIR%\%~n1.zip“
%DIR%\%~n1.zip”之间的区别吗?您没有为您的任务提供足够的信息,我们不知道
%DIR%
的值或它是如何定义的,也不知道您传递给脚本的确切路径以及您是如何做到的。另外,我建议您使用
“%~1”
而不是
%1
@Compo实际上它们是一样的。当我从脚本中复制cmd并直接在cmd中运行时,它可以工作。不,它们不是!聪明的,(卷曲的)引号和愚蠢的,(笔直的)引号是不一样的。你需要用直的@对不起,由于我正在用手机打这个问题,所以没有足够的信息。我已经更新了我的问题,但是你没有提供我提到的信息,是吗?我现在也在用电话,虽然我不知道这与你提供信息有什么关系。
zip.exe -1 -m FILE.zip FILE.txt