我写了下面的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
答案 0 :(得分:2)
您应该使用7zip工具。安装后,应使用以下命令。
"C:\Program Files\7-Zip\7z.exe" e "C:\myzipfile.7z" -o"C:\ExtractedFolder" *.* -r -y
或使用批处理文件进行参数化。
call&#34; C:\ Scripts \ mycustombatch.bat&#34; &#34;%WORKSPACE%\ myzipfile.7z&#34; &#34; C:\ ExtractedFolder&#34;
<强> mycustombatch.bat 强>
cd "C:\Program Files\7-Zip"
7z e %1 -o%2 *.* -r -y
7z.exe用法示例:http://www.dotnetperls.com/7-zip-examples
答案 1 :(得分: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"
这样您就不需要在构建服务器上安装任何第三方工具。