0

このフォーラムを高く評価し、オンラインで非常に多くのボランティアが参加していることをうれしく思います。

私はバッチに慣れていないので、誰かが親切に答えてくれるかもしれません。とても感謝しています。

osql を使用して多くの sql db をバックアップし、日付 (および時刻) を追加して名前を変更します (.bak から .dat もオプションです)。すべてのコードを 1 つのバッチにまとめて、スケジュールできるようにします。

osqlを使用してsql dbをバックアップする方法を見つけましたが、正常に機能します。また、バッチコードでファイルの名前を変更する方法も見つかりました。これも正常に機能します。

しかし、それらのうちの2つを結合しようとすると、ファイルはバックアップされますが、名前の変更部分はありません。立ち往生していて、この穴から抜け出せないようです。誰か助けてくれませんか、お願いします、私の目はその障害物を見渡すことができません。

:: 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 に答える