2016-09-28 85 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 
相关问题