我有以下批处理文件从我们的服务器下载备份:
@echo off
d:
cd \DBBackups
curl -u user:password https://example.com/Backups/list.php?p=anotherpassword >list.txt
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ list.txt"`) do (
echo =========================================
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
set "tmp=%%a"
set "_tempvar=YesYes"
if !tmp:~-3!==tar set "_tempvar=1"
if !tmp:~-3!==bak set "_tempvar=1"
if !_tempvar! EQU 1 (
if exist !var! (
echo !var! has already been downloaded
) else (
echo Downloading !var!
)
if not exist !var! wget --no-check-certificate --user=user --password=yap https://www.example.com/Backups/!var!)
)
ENDLOCAL
)
c:
echo "Drive changed!"
字符串
该文件接收一个文件列表(每行一个文件)并将它们保存到list.txt。然后读取每一行并下载文件。最后,将驱动器更改回c:失败了。
我想这可能是ERRORLEVEL被设置为大于0。因此,我尝试了here提供的解决方案,包括“cmd /c”exit /B 0”",“cd ."和“ver > nul”,但它们不起作用。最后的回声“驱动器改变了!“0打印。
欢迎任何建议。
1条答案
按热度按时间d8tt03nd1#
由于您执行
D:
,然后执行cd
,因此执行setlocal
时的当前目录是d:\DBBackups
。此目录将在批处理结束时还原(隐式endlocal)。您需要在
c:
之前添加endlocal
命令