0

首先,我不得不忍受让 icalcs 向文件夹中的每个人授予完全权限,因为我不知道我应该写“Tout le monde”而不是“everyone”,因为我的 Windows 7 语言是法语,实际上我需要这个命令为此,我可以在相同的权限更改文件夹中解压缩 zip 文件。

我的批处理文件的代码如下:

call xcopy glassfish-4.1.zip C:\Users\Feki\Desktop\vvv2
icacls C:\Users\Feki\Desktop\vvv2 /grant "Tout le monde":f
call C:\Program Files\Java\jdk1.7.0_40\bin>jar xf C:\Users\Feki\Desktop\vvv2\glassfish-4.1.zip
ECHO.
ECHO Press any key to exit. 
pause>null

日志表明 icalcs 成功,但是当提取开始时,我收到“拒绝访问”消息

- - 编辑 - -

我试图确保我拥有对 zip 文件的提取权限,所以我添加了

icacls C:\Users\Feki\Desktop\vvv2\* /grant "Tout le monde":f

在第一次 icacls 之后,但提取仍然不起作用

4

1 回答 1

1

首先我想说我觉得你的剧本看起来有点奇怪。

在第一行

call xcopy glassfish-4.1.zip C:\Users\Feki\Desktop\vvv2

您正在将 zip 文件复制到桌面上的文件夹中,这已经需要写入访问权限,C:\Users\Feki\Desktop\vvv2否则将无法正常工作。

在下一行中,您尝试设置此文件夹的访问权限:

icacls C:\Users\Feki\Desktop\vvv2 /grant "Tout le monde":f

如上所述,这没有多大意义,因为您已经将 zip 文件写入此文件夹,因此您必须至少具有写入访问权限。

现在解决问题,调用:

call C:\Program Files\Java\jdk1.7.0_40\bin>jar xf C:\Users\Feki\Desktop\vvv2\glassfish-4.1.zip

无论如何都不应该工作,因为ProgramFiles之间有空格。我不知道这bin>jar应该是什么,但如果这对你有用,那么你可以以这种方式使用它。

我会这样写:

call "%ProgramFiles%\Java\jdk1.7.0_40\bin\jar.exe" xf C:\Users\Feki\Desktop\vvv2\glassfish-4.1.zip

如果此调用给您一条Access denied.消息,那么您可能在命令行的当前路径中没有写访问权限。

请注意,该jar实用程序会将 zip 文件的内容提取到命令行的当前路径。这意味着,如果您在其中,c:\那么它将将内容提取到c:\,如果您在,c:\bla\那么它将将内容提取到c:\bla\. jar(如果您使用完整路径或仅当它在您的 PATH变量中调用它,这没有什么区别。)

所以这看起来你在 glassfish-4.1.zip 所在的路径中没有正确的访问权限,因为这是你的命令行的当前路径。我猜您想将内容提取到桌面上的文件夹中。为此,只需在发出提取调用之前更改此文件夹的当前路径。

我猜脚本可能看起来像这样:

call xcopy glassfish-4.1.zip C:\Users\Feki\Desktop\vvv2
cd C:\Users\Feki\Desktop\vvv2\
call "%ProgramFiles%\Java\jdk1.7.0_40\bin\jar.exe" xf glassfish-4.1.zip

也可以看看:

于 2015-01-03T18:50:35.377 回答