我在 C:\Temp\Backup\ 中有一个名为 backup.bat 的批处理文件。在 backup.bat 中有以下文本。我想创建一个批处理文件,将 backup.bat 中每行包含 172.16.17.4 的行中的 172.16.17.4 更改为 192.168.1.104。
目的是让外部用户编辑一次 IP 地址,并避免用户在 backup.bat 文件中编辑多行的错误。
你能帮我吗?
timeout /t 5 /nobreak
cd /d C:\Temp\Backup\172.16.17.4\BOS
ren "C:\Temp\Backup\172.16.17.4\BOS\DATA.DB" "DATA-%stamp%.DB" >nul
timeout /t 5 /nobreak
cd /d C:\Temp\Backup\172.16.17.4\FCC
ren "C:\Temp\Backup\172.16.17.4\FCC\DATA.DB" "DATA-%stamp%.DB" >nul
timeout /t 5 /nobreak
cd /d C:\Temp\Backup
start "" putty.exe -load -ssh [email protected] -l user -pw password
timeout /t 20 /nobreak
plink -ssh [email protected] -pw password -batch drvctrl 1
timeout /t 5 /nobreak
plink -ssh [email protected] -pw password -batch pkill fccloader
timeout /t 5 /nobreak
plink -ssh [email protected] -pw password -batch pkill FCC
timeout /t 5 /nobreak
plink -ssh [email protected] -pw password -batch pkill BOS
timeout /t 5 /nobreak
start "" pscp -l user -pw password [email protected]:/usr/local/dir/BOS/DB/DATA.DB C:\Temp\Backup\172.16.17.4\BOS\DATA.DB
timeout /t 120 /nobreak
start "" pscp -l user -pw password [email protected]:/usr/local/dir/DB/DATA.DB C:\Temp\Backup\172.16.17.4\FCC\DATA.DB
timeout /t 120 /nobreak
plink -ssh [email protected] -pw password -batch reboot
timeout /t 5 /nobreak
taskkill /f /im putty.exe
答案1
最好将 IP 作为参数传递,就像 @DavidPostill 建议的那样。或者,您可以在批处理文件顶部使用变量,这样您只需编辑一件事:
SETLOCAL
SET theIPaddress=172.16.17.4
cd /d C:\Temp\Backup\%theIPaddress%\BOS
ren "C:\Temp\Backup\%theIPaddress%\BOS\DATA.DB" "DATA-%stamp%.DB" >nul
cd /d C:\Temp\Backup\%theIPaddress%\FCC
ren "C:\Temp\Backup\%theIPaddress%\FCC\DATA.DB" "DATA-%stamp%.DB" >nul
cd /d C:\Temp\Backup
plink -ssh user@%theIPaddress% -pw password -batch "drvctrl 1; pkill fccloader; pkill FCC; pkill BOS"
timeout /t 15 /nobreak
start "" pscp -l user -pw password user@%theIPaddress%:/usr/local/dir/BOS/DB/DATA.DB C:\Temp\Backup\%theIPaddress%\BOS\DATA.DB
timeout /t 120 /nobreak
start "" pscp -l user -pw password user@%theIPaddress%:/usr/local/dir/DB/DATA.DB C:\Temp\Backup\%theIPaddress%\FCC\DATA.DB
timeout /t 120 /nobreak
plink -ssh user@%theIPaddress% -pw password -batch reboot
timeout /t 5 /nobreak
ENDLOCAL
我删除了许多不需要的等待,并将所有第一个命令合并到一行中。