如何使用Windows的內置功能壓縮或解壓縮腳本?


Answers

要擴展Steven Penny的PowerShell解決方案,可以通過調用powershell.exe將它合併到批處理文件中,如下所示:

powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }"

正如Ivan Shilo所說,這不適用於PowerShell 2,它需要PowerShell 3或更高版本以及.NET Framework 4。

Question

在Windows中,你可以通過zip一些文件

右鍵單擊 - >發送到 - >壓縮(壓縮)文件夾

通過雙擊.zip文件並unzip文件來unzip

有沒有辦法從腳本(.bat文件)中應用這些功能, 而無需安裝任何第三方

================================================== =
該問題已根據網站規則進行了編輯, 請重新打開







它不完全是zip,但使用Windows工具壓縮文件的唯一方法是:

makecab <source> <dest>.cab

解壓縮:

expand <source>.cab <dest>

高級示例(來自ss64.com):

Create a self extracting archive containing movie.mov:
C:\> makecab movie.mov "temp.cab"
C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe"
C:\> del /q /f "temp.cab"

更多信息: makecabexpandmakecab高級用途




壓縮文件:

C:\> zip -9 -m -o file.dat.zip file.dat
  • -9最大壓縮
  • -m在成功壓縮後刪除原始文件
  • -o將zip文件的修改日期設置為與原始文件相同
  • 太糟糕了,人們必須給它所需的zip文件的名稱,而不是僅僅將.zip擴展名添加到要壓縮的文件的名稱



如果您安裝了Java ,則可以使用jar命令將其壓縮為ZIP存檔:

jar -cMf targetArchive.zip sourceDirectory

c =創建一個新的檔案文件。

M =指定不應將清單文件添加到存檔。

f =表示目標文件名稱。




我一直在尋找回答這個確切的問題,從我的研究中,DiryBoy的回應似乎是準確的。

我發現compact.exe程序壓縮文件,但不創建高度壓縮的文件(或文件集)。 它與在Windows中右鍵單擊驅動器號或分區時所得到的選項類似。 您可以選擇執行清理(刪除臨時文件等)以及壓縮文件。 壓縮文件仍然可以訪問,但只是經過壓縮以在空間不足的驅動器上創建空間。

我還發現了我在我的電腦上碰到的compress.exe。 它在大多數Windows機器上不是本地的,並且是2003資源工具包的一部分。 它的確可以製作一個壓縮文件,但它與Windows安裝盤中的文件非常相似(將下劃線作為文件擴展名或文件名的最後一個字符)。 extract.exe命令提取這些文件。

但是,如果可以通過GUI本地完成,那麼可能有辦法通過批處理,.vbs或命令行中的其他類型的腳本來完成。 由於Windows有'發送到'選項來創建一個zip文件,我知道必須有一種方法可以通過命令行來完成,我發現了一些選項。

這是一個很棒的鏈接,展示瞭如何使用windows native命令壓縮文件。

https://superuser.com/questions/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili

我用一個包含多個嵌套文件和文件夾的目錄對它進行了測試,結果非常完美。 只需按照命令行的格式。

還有一種方法可以通過我發現的命令行來解壓文件。 一種方法是,打開一個資源管理器窗口,顯示壓縮文件的內容。 其中一些還使用Java,它不一定是Windows本地的,但是很常見,幾乎看起來如此。

https://superuser.com/questions/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default

如何使用命令行解壓文件?




您可以使用包裝在BAT文件中的vbsscript ...這是我的代碼在相對PATH上工作...

無需任何第三方工具或依賴關係..只需設置源和目標。

文件名:zipping.bat

echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs
echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs
echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs

'Create empty ZIP file.
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) >> _zipup.vbs

echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs


echo 'Keep script waiting until compression is done
echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs
echo     WScript.Sleep 200 >> _zipup.vbs
echo Loop >> _zipup.vbs

CScript  _zipup.vbs  %SOURCEDIR%  %OUTPUTZIP%

del _zipup.vbs



Related