2016-09-28 67 views
0

我嘗試在您的某個項目的部署階段運行以下腳本。但沒有成功。該腳本應刪除所有以更新開頭的所有文件夾和所有.zip文件,然後將新的zip複製到目標。腳本任務刪除文件夾在部署階段失敗

我的腳本:

@echo off 
set "pathToCopy=\\{server}\Updates" 
set "fileName=Update*.zip" 
set "username=user" 
set "password=secret" 

echo Get network share rights... 
net use "%pathToCopy%" /USER:%username% %password% 
if not "%errorlevel%"=="0" echo Network access not possible & exit /b 1 

for /D %f in ("%pathToCopy%\Update*") do rmdir %f /S /Q 

del "%pathToCopy%\Update_*.zip" 

copy "%fileName%" "%pathToCopy%" 

delcopy命令工作正常,但forrmdir不和我收到以下消息(SyntaxError錯誤)

"pathToCopyf" kann syntaktisch an dieser Stelle nicht verarbeitet werden. (German) 

我可以使用本地開發機器上的cmd運行腳本,而不會有任何問題。我可以從我的本地機器,當我運行for沒有()

for /D %f in "%pathToCopy%\Update*" do rmdir %f /S /Q 

因此重現此錯誤,有沒有竹(5.9.3)處理for一個Bug? 我必須重寫我的for嗎? 我還需要使用通配符刪除所有文件夾還有哪些其他解決方案?

+0

你的引號是不正確的。使用'set pathToCopy =「\\ {server} \ Updates」',但如果您有空格,則只需要引號。 – FloatingKiwi

+1

另外,在使用批處理文件時,您需要將另一個符號轉義爲%符號。即'%% f' – FloatingKiwi

+0

@FloatingKiwi就是這樣。將'%f'修復爲'%% f'解決了我的問題。添加它作爲答案 – Jehof

回答

1

終端和批處理文件以兩種不同的方式處理%符號。

這雖然會從終端工作:需要與另一個%標誌進行轉義從一個批處理文件運行

for /D %f in "%pathToCopy%\Update*" do rmdir %f /S /Q 

%:

for /D %%f in "%pathToCopy%\Update*" do rmdir %%f /S /Q