默认情况下,Windows 8 / 8.1中的所有压缩文件都配置为使用操作系统具有的文件资源管理器程序打开。我想解压缩某个目录中的所有文件,并在使用批处理脚本解压缩时保留文件夹名称。 我知道如何在机器上安装7-Zip时这样做。但是如果没有安装提取的软件,如何在Windows 8 / 8.1上执行此操作?我想用windows脚本来做这件事。
答案 0 :(得分:1)
// unzips only part of the zip with given path inside
zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir\InzipFile -destination C:\OtherDir -keep no -force yes
zipjs.bat unZipItem -source C:\myDir\myZip.zip\InzipDir -destination C:\OtherDir
答案 1 :(得分:0)
我找到了使用vbscript的方法。这是代码。
strZipFile = "" 'name of zip file
outFolder = "" 'destination folder of unzipped files
Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions
填写zip文件和输出文件夹的相应名称(必须引用)。使用vbs扩展名保存脚本。在批处理文件中,我们可以使用以下条目运行脚本:cscript // nologo scriptname.vbs
答案 2 :(得分:-1)
这个话题很有意思!我做了几次测试,发现在使用资源管理器打开.zip文件后,我可能会按某些键以提取文件:Alt-J和A选择“Extract all”,然后按Enter执行此操作,然后Alt-F和Alt-C关闭资源管理器。我的Windows是8.1西班牙语版本,所以我不确定英文版本的这些密钥是否相同。
然后我编写了一个批处理文件,该文件使用this post中解释的方法将密钥发送到资源管理器,因此可以自动完成之前的过程。我不得不在密钥之间输入一些延迟,否则资源管理器可能会忽略它们;延迟可能是.zip文件大小的函数:较大文件的延迟时间更长。
@if (@CodeSection == @Batch) @then
@echo off
rem Start explorer with the zip file and wait for it to initialize
start "" Explorer.exe %1
timeout /T 3 > NUL
rem Send to Explorer: Alt-J, A and Enter to extract all files from .zip
CScript //nologo //E:JScript "%~F0" "%%J"
timeout /T 1 > NUL
CScript //nologo //E:JScript "%~F0" "A"
timeout /T 1 > NUL
CScript //nologo //E:JScript "%~F0" "{Enter}"
rem ... and Alt-F Alt-C to end Explorer
timeout /T 4 > NUL
CScript //nologo //E:JScript "%~F0" "%%F%%C"
echo Extracted files:
dir /p "%~N1"
goto :EOF
@end
WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));