0

为这个论坛点赞,很高兴有这么多在线志愿者。

我对批处理不熟悉,所以也许有人会很好地回答我。非常感谢。

我尝试用 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

提前致谢

4

1 回答 1

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
于 2012-03-22T17:01:28.297 回答