2013-06-18 41 views
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 
+0

爲什麼啓用delayexpansion?您是否嘗試使用網絡驅動器?您是否嘗試指定ncxc.exe的完整路徑? –

+0

您是否使用'popd'刪除了網絡路徑? – Endoro

+1

聽起來像您在批處理文件中使用了變量'path'。 – foxidrive

回答

0

CMD不能從沒有註冊表破解UNC路徑開始。

你的問題似乎有點奇怪。我建議只使用UNC路徑進行復制。

set deployment_path=d:\deployment\ 
SETLOCAL ENABLEDELAYEDEXPANSION 
set project_path=\\server\share 

copy %deployment_path%\sppg.exe %project_path%\sppg.exe /y 

這完全沒有問題。嘗試一下。我也建議不要使用%cd%,因爲它不能確切地依賴它的內容。

和exe文件:只是給它的完全合格的路徑。

%project_path%\ncxc.exe ... 
相關問題