1
我在詹金斯執行Windows批處理文件。部分腳本查找匹配*.cover.xml
的文件,並在其中每個文件上運行外部程序。該批處理文件的相關部分看起來像這樣爲什麼在操作本地和網絡路徑時,此Windows批處理文件的行爲有所不同?
SETLOCAL ENABLEDELAYEDEXPANSION
SET project_path=\\home\Sonar\8.1
PUSHD %project_path%
FOR /R %%i IN (*.cover.xml) do ncxc.exe %%i
POPD
當我設置project_path
爲本地路徑,如D:\MyProj\
,它完美的作品。當我使用UNC路徑時,如上所述,存在問題。它第一次運行,它通過。每次之後,它都會失敗!
'ncxc.exe'不被識別爲內部或外部命令,可操作程序或批處理文件。
我跑DIR
在腳本的末尾,目錄是空的! Jenkins服務以域用戶身份運行,copy
命令與網絡資源一起運行。並且PUSHD
將UNC路徑掛載到一個驅動器號。
編輯 - 整批文件,也沒有以同樣的方式
set deployment_path=d:\deployment\
SETLOCAL ENABLEDELAYEDEXPANSION
set project_path=Z:\8.1\
pushd %project_path%
set some_path=%CD%
copy %deployment_path%\sppg.exe %CD%\sppg.exe /y
copy %deployment_path%\sonar_main.bat %CD%\sonar_main.bat /y
copy %deployment_path%\utils_all.bat %CD%\Utils\utils.all.bat /y
copy %deployment_path%\dunit2surefire.xsl %CD%\HCPC\dunit2surefire.xsl /y
copy %deployment_path%\xslt2xml.exe %CD%\HPC\xslt2xml.exe /y
copy %deployment_path%\sonar_delphi_all.bat %CD%\HPC\sonar_delphi_all.bat /y
copy %deployment_path%\xslt.bat %CD%\HCPC\Client\xslt.bat /y
copy %deployment_path%\xslt.bat %CD%\HCPC\Server\xslt.bat /y
copy %deployment_path%\ncxc.exe %CD%\ncxc.exe /y
copy %deployment_path%\ncover-converter.bat %CD%\ncover-converter.bat /y
ncxc.exe %CD%
popd
pushd %project_path%
sppg.exe "%CD%" ./Output_AutomatedBuild/TestsResults/Coverage/*.cover.xml
dir Z:
sonar_main.bat
popd
爲什麼啓用delayexpansion?您是否嘗試使用網絡驅動器?您是否嘗試指定ncxc.exe的完整路徑? –
您是否使用'popd'刪除了網絡路徑? – Endoro
聽起來像您在批處理文件中使用了變量'path'。 – foxidrive