赞成这个论坛,我很高兴有很多志愿者在线。
我对批处理并不熟悉,所以也许有人会如此善意地通过回答来启发我。非常感谢。
我尝试用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
提前致谢
答案 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