运行具有多个配置
问题描述:
一个蝙蝠脚本我做了一个简单的脚本来备份我的数据库,现在我有一个问题,我的每个服务器的变量存储在.txt
我试图加载它们在脚本多次。运行具有多个配置
眼下这个配置它覆盖的configs,而不是运行它为每个文件。
有没有一种方法,使脚本文件xxx
执行接档yyy
等等
for /F "tokens=*" %%a in (servers\xxx.txt servers\yyy.txt etc) do (
%%a
)
:: Backup folder
set backupfldr="C:\Backup\files\"
:: MySQL EXE Path
set mysqldumpexe="C:\Backup\mysqldump-5_6.exe"
:: zip
set zipper="C:\Backup\zip\7za.exe"
:: date
set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
:: final
set bkupfilename=%datetimef%-%dbname%.sql
:: start
echo Backing up to file: %bkupfilename%
%mysqldumpexe% --set-gtid-purged=OFF -h %server% -u %dbuser% -p%dbpass%
%dbname% > %backupfldr%"%bkupfilename%"
.txt文件都是这样
set server=100.100.100.100
set dbname=nameofdatabase
set dbuser=userofdatabase
set dbpass=passofdatabase
答
我没有验证你的逻辑,但是对于字符串列表(文件名在这里)使用一个普通的for
(没有/f
):
REM for every of those files call a subroutine:
for %%a in ("servers\xxx.txt" "servers\yyy.txt" etc) do call :process %%a
goto :eof
:process
copy "%~1" "%~dp0\temp.bat"
call "%~dp0\temp.bat"
:: Backup folder
set backupfldr="C:\Backup\files\"
:: MySQL EXE Path
set mysqldumpexe="C:\Backup\mysqldump-5_6.exe"
:: zip
set zipper="C:\Backup\zip\7za.exe"
:: date
set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
:: final
set bkupfilename=%datetimef%-%dbname%.sql
:: start
echo Backing up to file: %bkupfilename%
%mysqldumpexe% --set-gtid-purged=OFF -h %server% -u %dbuser% -p%dbpass%
%dbname% > %backupfldr%"%bkupfilename%"
(给,你的.txt文件看起来像:
set server=100.100.100.100
set dbname=nameofdatabase
set dbuser=userofdatabase
set dbpass=passofdatabase
)
+0
非常感谢它添加了调用子程序后完美。 – Adrian
将是很好的知道,如何'xxx.txt'等被格式化。你就可以显示这些文件中的一个(与模糊的密码,当然...)? – Stephan
是的,我只设置中的.txt的变量,然后执行脚本的其余部分。现在,因为所有文件都具有相同的变量,文件2将覆盖文件1.我期待,使运行文件1接档2脚本等 – Adrian