Batch file 通过jenkins执行批处理命令不提取文件,尽管它在作为bat文件运行时提取文件

Batch file 通过jenkins执行批处理命令不提取文件,尽管它在作为bat文件运行时提取文件,batch-file,jenkins,cmd,continuous-integration,build-process,Batch File,Jenkins,Cmd,Continuous Integration,Build Process,我已经用Jenkins编写了下面的批处理脚本。当我在Jenkins服务器工作区的同一个文件夹中将其作为bat文件运行时,它运行时没有任何问题。但当我使用“执行Windows批处理命令”通过jenkins运行它时,它并没有被提取。它打印带有相关路径的“即将从中复制”行,并从那里继续执行。控制台输出中未打印任何内容,也未提取任何内容。 下面是脚本 echo %CD% FOR /D %%p IN ("%CD%\Setups\*") DO rmdir "%%p" /s /q call mvn org

我已经用Jenkins编写了下面的批处理脚本。当我在Jenkins服务器工作区的同一个文件夹中将其作为bat文件运行时,它运行时没有任何问题。但当我使用“执行Windows批处理命令”通过jenkins运行它时,它并没有被提取。它打印带有相关路径的“即将从中复制”行,并从那里继续执行。控制台输出中未打印任何内容,也未提取任何内容。 下面是脚本

echo %CD%
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.2.23:8081/nexus/content/repositories/releases/ -Dartifact=test: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.2.23:8081/nexus/content/repositories/releases/ -Dartifact=test:installer-prerequisites:1.0.0 -Ddest=Setups/PreRequisites/installer-prerequisites.zip -Dpackaging=zip

echo came after the downloads

for /r %%i in (*.zip) do (
  echo about to copy from %%~dpi to %%~fi
Call :UnZipFile "%%~dpi" "%%~fi"
echo called unzip on %%i
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

检查zip文件的权限,并确保jenkins运行的用户可以读取该文件

检查zip文件的权限,确保jenkins运行的用户可以读取该文件

我必须在子程序末尾指定GOTO:eof。就是

: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%"
GOTO:eof
endlocal
:UnZipFile
setlocal
设置vbs=“%temp%\\.vbs”
如果存在“%vbs%”删除/f/q“%vbs%”
>“%vbs%”回显集fso=CreateObject(“Scripting.FileSystemObject”)
>>“%vbs%”回显如果不是fso.FolderExists(“%1”),则
>>“%vbs%”回显fso.CreateFolder(“%1”)
>>%vbs%”回显结束,如果
>>“%vbs%”回显集objShell=CreateObject(“Shell.Application”)
>>“%vbs%”回显集FilesInZip=objShell.NameSpace(“%2”).items
>>“%vbs%”echo objShell.NameSpace(“%1”).CopyHere(FilesInZip)
>>“%vbs%”回显集fso=无
>>“%vbs%”回显集objShell=无
cscript//nologo“%vbs%”
如果存在“%vbs%”删除/f/q“%vbs%”
后藤:eof
端部

否则,子程序就不会返回到调用它的主要部分。

我必须在子程序的末尾指定GOTO:eof。就是

: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%"
GOTO:eof
endlocal
:UnZipFile
setlocal
设置vbs=“%temp%\\.vbs”
如果存在“%vbs%”删除/f/q“%vbs%”
>“%vbs%”回显集fso=CreateObject(“Scripting.FileSystemObject”)
>>“%vbs%”回显如果不是fso.FolderExists(“%1”),则
>>“%vbs%”回显fso.CreateFolder(“%1”)
>>%vbs%”回显结束,如果
>>“%vbs%”回显集objShell=CreateObject(“Shell.Application”)
>>“%vbs%”回显集FilesInZip=objShell.NameSpace(“%2”).items
>>“%vbs%”echo objShell.NameSpace(“%1”).CopyHere(FilesInZip)
>>“%vbs%”回显集fso=无
>>“%vbs%”回显集objShell=无
cscript//nologo“%vbs%”
如果存在“%vbs%”删除/f/q“%vbs%”
后藤:eof
端部

否则,子程序就不会返回到调用它的主要部分。

每次都必须清理工作区。如果它不是一个代码库,你应该使用jenkins工作区清理器插件

将脚本放入批处理文件中。并从jenkins的“执行Windows批处理命令”中运行它,如下所示

call "C:\Scripts\mycustombatch.bat" myparameter1 "myparameter2"
您的批处理脚本文件如下所示:%1是第一个参数。您应该修改并添加更多参数

xcopy %1 %2 /y

你应该使用一个免费的解压程序,比如7zip工具。安装后,应直接使用以下命令

"C:\Program Files\7-Zip\7z.exe" e "C:\myzipfile.7z" -o"C:\ExtractedFolder" *.* -r -y
或者使用批处理文件进行参数化,并从jenkins调用bat文件

call "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使用示例:


每次都必须清洁工作区。如果它不是一个代码库,你应该使用jenkins工作区清理器插件

将脚本放入批处理文件中。并从jenkins的“执行Windows批处理命令”中运行它,如下所示

call "C:\Scripts\mycustombatch.bat" myparameter1 "myparameter2"
您的批处理脚本文件如下所示:%1是第一个参数。您应该修改并添加更多参数

xcopy %1 %2 /y

你应该使用一个免费的解压程序,比如7zip工具。安装后,应直接使用以下命令

"C:\Program Files\7-Zip\7z.exe" e "C:\myzipfile.7z" -o"C:\ExtractedFolder" *.* -r -y
或者使用批处理文件进行参数化,并从jenkins调用bat文件

call "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使用示例:


我用你的建议编辑了这个问题,但仍然不走运:(我已经按照你说的方式完成了?打印解压文件之前的回音。)即将从C:\Program Files(x86)\Jenkins\jobs\Installer\workspace\PlatformSetup\UpdaterServiceInstaller\复制到C:\Program Files(x86)\Jenkins\jobs\Installer\workspace\PlatformSetup\UpdaterServiceInstaller\Update\u Service1.0.3.zip“但在这之后,微调器正在运行,但没有提取任何内容。我用您的建议编辑了问题,但仍然不走运:(我按照您说的方式完成了?打印解压文件之前的回音。“即将从C:\Program Files(x86)\Jenkins\jobs\Installer\workspace\PlatformSetup\UpdaterServiceInstaller\复制到C:\Program Files(x86)\Jenkins\jobs\Installer\workspace\PlatformSetup\UpdaterServiceInstaller\Update\U Service1.0.3.zip”,但在此之后,微调器将继续运行,但不会提取任何内容