簡體   English   中英

使用批處理文件靜默提取 zip 文件

[英]extract zip files silently using batch file

我編寫了以下 bat 文件來提取 zip 文件。 但是當我從 Jenkins 執行它時這不起作用。 我懷疑這是因為它試圖啟動復制 UI 和服務阻止這樣做,因為 Windows 服務不允許使用 UI。 有沒有辦法編輯以下腳本以靜默解壓? 如果有任何其他工具,請提供一些示例。

    @echo off
FOR /D %%p IN ("%CD%\Setups\*.*") DO rmdir "%%p" /s /q

call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=k:update-service:1.0.3 -Ddest=Setups/Services/update-service.jar
call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=k:installer-prerequisites:1.0.0 -Ddest=Setups/PreRequisites/installer-prerequisites.zip -Dpackaging=zip
call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=k:-apps:1.0.0 -Ddest=Setups/Apps/-apps.zip -Dpackaging=zip
call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=k:mosquitto:1.0.0 -Ddest=Setups/mosquitto/mosquitto.zip -Dpackaging=zip
call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.15.190:8081/nexus/content/repositories/releases/ -Dartifact=k:ble-service:1.0 -Ddest=Setups/Services/ble-service.jar
for /r %%i in ("*.zip") do (
    Call :UnZipFile "%%~dpi" "%%~fi"
    del /S /Q "%%~fi"
)
exit \b

:UnZipFile <ExtractTo> <newzipfile>
    setlocal
    set vbs="%temp%\_.vbs"
    if exist "%vbs%" del /f /q "%vbs%"
     >"%vbs%" echo Set fso = CreateObject("Scripting.FileSystemObject")
    >>"%vbs%" echo If NOT fso.FolderExists("%~1") Then
    >>"%vbs%" echo fso.CreateFolder("%~1")
    >>"%vbs%" echo End If
    >>"%vbs%" echo set objShell = CreateObject("Shell.Application")
    >>"%vbs%" echo set FilesInZip=objShell.NameSpace("%~2").items
    >>"%vbs%" echo objShell.NameSpace("%~1").CopyHere(FilesInZip)
    >>"%vbs%" echo Set fso = Nothing
    >>"%vbs%" echo Set objShell = Nothing
    cscript //nologo "%vbs%"
    if exist "%vbs%" del /f /q "%vbs%"
    endlocal

您應該使用 7zip 工具。 安裝后,您應該使用以下命令。

"C:\Program Files\7-Zip\7z.exe" e "C:\myzipfile.7z" -o"C:\ExtractedFolder" *.* -r -y

或用批處理文件參數化。

調用 "C:\\Scripts\\mycustombatch.bat" "%WORKSPACE%\\myzipfile.7z" "C:\\ExtractedFolder"

mycustombatch.bat

cd "C:\Program Files\7-Zip"
7z e %1 -o%2 *.* -r -y

7z.exe 使用示例: http : //www.dotnetperls.com/7-zip-examples

一種選擇是改用 PowerShell 腳本,並使用以下內容:

function UnZip
{
    param([string]$zip, [string]$outpath)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}
UnZip "D:\YourFile.zip" "D:\The_Path_You_Want_It_To_Be_Extracted"

這樣您就不需要在構建服務器上安裝任何 3rd 方工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM