即使在使用icacls授予完全权限后,也无法使用jar -xf提取zip文件

时间:2015-01-03 10:07:16

标签: java batch-file glassfish unzip icacls

首先,我不得不忍受让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后,但提取仍然无法正常工作

1 个答案:

答案 0 :(得分: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

无论如何都不应该起作用,因为程序文件之间存在空格。我不知道这个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\ (如果用完整路径调用它,或者在PATH var中只调用jar,则没有区别。)

因此,看起来您在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

另见: