【问题标题】:Can't extract a zip file with jar -xf even after granting full permissions using icacls即使在使用 icacls 授予完全权限后,也无法使用 jar -xf 提取 zip 文件
【发布时间】:2015-01-03 10:07:15
【问题描述】:

首先我不得不忍受让 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 之后,但提取仍然没有工作

【问题讨论】:

  • 我将批处理文件转换为 .exe 文件,因此会显示一个系统弹出窗口供用户确认将要发生的操作,但提取仍然失败
  • C:\Program Files\Java\jdk1.7.0_40\bin>jar 为什么是>
  • 我发现它与 > 类似。现在我将其更改为 \ 但提取仍然无法正常工作
  • 在这里stackoverflow.com/questions/18052460/… 我发现有人说没有授予用户对包含 jar.exe 的文件夹的权限。也许它是提取文件的默认位置,我会看看如何个性化提取位置
  • 我试过这个命令:调用 C:\Users\Feki\Desktop\vvv2>jar xf glassfish-4.1.zip 但它也不起作用

标签: java batch-file glassfish unzip icacls


【解决方案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\(没有区别如果您使用完整路径调用它,或者当它在您的 PATH 变量中时仅使用 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

另见:

【讨论】:

  • jar 仅适用于我本地(在当前文件夹中),它对放置在远程文件夹中的任何文件都不起作用。这是我使用批处理脚本的第一天,我忘记了它就像在我可以使用 CD 的 dos 中一样......所以非常感谢!
猜你喜欢
  • 2015-01-04
  • 2020-01-04
  • 2015-07-12
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多