cmd命令的结果赋值

Zss 发表于:

win中没有“号,需要命令的结果来赋值给变量

shell中 a=`ls`

win中使用  for /F %%i in (‘dir *.bak /b’) do ( set FileName=%%i)

‘dir *.bak /b’为命令赋值给FileName变量
获取所有.bak文件赋值

echo off

set SrcPath=D:\MSSQL\
rem Bak文件的文件夹路径

rem set FileName=test2.bak
rem rem Bak文件名

set DbName=test2
rem 数据库DB名

set SleepTime=5
rem 循环检测时间 单位:秒

set Sql_DB_Path=D:\MSSQL\DB
rem SQL文件备份路径 需要创建一个文件夹来存放已经执行的SQL文件

:test
rem 导入数据后改名BAK文件名为时间搓防止重复,移动到备份的目录下,延时后重新循环

cd %SrcPath%
for /F %%i in ('dir *.bak /b') do ( set FileName=%%i)
rem 进入bak文件夹,获取所有.bak文件赋值

set newfilename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

sqlcmd -S . -E -Q "RESTORE DATABASE %DbName% FROM DISK='%SrcPath%%FileName%'"
rem 恢复bak文件

ren %SrcPath%%FileName% %newfilename%.bak
move %SrcPath%%newfilename%.bak %Sql_DB_Path%
echo 延时:%SleepTime%秒
ping 127.0.0.1 -n %SleepTime% > null
del null

goto test
pause