将日期附加到osql使用批处理进行备份

时间:2011-09-30 19:22:10

标签: batch-file osql

赞成这个论坛,我很高兴有很多志愿者在线。

我对批处理并不熟悉,所以也许有人会如此善意地通过回答来启发我。非常感谢。

我尝试用osql备份许多sql db,然后用附加日期(和时间)重命名它们(.bak到.dat也是可选的) 想要在一个批次中拥有所有代码,以便我能够安排它

找到了用osql备份sql db的方法,它运行正常。 还找到了在批处理代码中重命名文件的方法,它也可以正常工作。

但是当我尝试将它们中的两个连接在一起时,它备份文件但没有重命名部分。我被困了,似乎没有找到出洞的方法。 请有人帮助我,我的眼睛看不到那个障碍。

:: BAT file

echo off

osql -U** -P** -Sserver\SQLEXPRESS2005 -ddb -u -w250 -n -l 30 -iback.txt -ooutput.txt


FOR /F "TOKENS=1,2*" %%A IN ('DATE/T') DO SET DATE=%%B
SET DATE=%DATE:/=%
FOR /F "TOKENS=*" %%A IN ('TIME/T') DO SET TIME=%%A
SET TIME=%TIME::=%
set TODAY=%DATE%%TIME%
echo %TODAY%

rename "C:\back\TEST.bak" "TEST%TODAY%.dat"

@echo on

提前致谢

1 个答案:

答案 0 :(得分:0)

%DATE%和%TIME%是系统环境变量,不应重置。你应该使用不同的变量。

我喜欢这种方法:

:: BAT file

echo off

osql -U** -P** -Sserver\SQLEXPRESS2005 -ddb -u -w250 -n -l 30 -iback.txt -ooutput.txt


FOR /f "tokens=2,3,4 delims=/ " %%a in ('echo %DATE%') do (
    set "Month=%%a"
    set "Day=%%b"
    set "Year=%%c"
    )
FOR /f "tokens=1,2,3,4 delims=:." %%a in ('echo %TIME%') do (
    set "HOUR=%%a"
    set "MINUTE=%%b"
    set "SECOND=%%c"
    set "HUNDREDTHS=%%d"
    )   

SET Today=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%%HUNDREDTHS%
echo %TODAY%

rename "C:\back\TEST.bak" "TEST%TODAY%.dat"

@echo on