即使在使用 icacls 授予完全权限后,也无法使用 jar -xf 提取 zip 文件
Can't extract a zip file with jar -xf even after granting full permissions using 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 之后,但提取仍然无效
首先我想说我觉得你的剧本看起来有点奇怪。
第一行
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
无论如何都不应该工作,因为 Program 和 Files 之间有一个 space。我不知道这个 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
另请参阅:
- creating batch script to unzip a file without additional zip tools
- Unjar to a specific destination
- Extracting .jar file with command line
首先,我不得不让 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 之后,但提取仍然无效
首先我想说我觉得你的剧本看起来有点奇怪。
第一行
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
无论如何都不应该工作,因为 Program 和 Files 之间有一个 space。我不知道这个 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
另请参阅:
- creating batch script to unzip a file without additional zip tools
- Unjar to a specific destination
- Extracting .jar file with command line