2016-05-09 9 views
2

zipファイルを抽出するために、以下のbatファイルを作成しました。しかし、これはJenkinsから実行すると機能しません。私はこれが原因と思われるのは、コピーUIとサービスを起動しようとしているが、WindowsサービスがUIを扱うことを許可していないため、サービスがそれを行うことを妨げているからです。サイレントに解凍を行うために以下のスクリプトを編集する方法はありますか?他のツールがあれば、いくつか例を挙げてください。バッチファイルを使用してzipファイルをサイレントに抽出

@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 
+0

コマンドラインの「unzip」ツールを使用してください。多くのものがあります。 – Jayan

+0

@Jayan使用可能な解凍ツールがたくさんありますが、それらは常に使用される可能性があるわけではありません。バッチが使用される理由の大部分は、多くの異なるWindowsコンピュータと互換性がなければならないことを意味します。すべてのコンピュータに「解凍ツール」がない場合もあります。 –

答えて

2

7zipツールを使用してください。インストールしたら、次のコマンドを使用してください。

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

またはバッチファイルでパラメータ化します。

コール "C:\スクリプト\ 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

0

代わりに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" 

このようにして、ビルドサーバーにサードパーティツールをインストールする必要はありません。

関連する問題