1

バッチファイルには次の数行があります。

@echo off 
echo Running dump...
"D:\wamp\bin\mysql\mysql5.5.16\bin\mysqldump" --host="localhost" --user="****" --password="****" database> "D:\wamp\backup\mysql\"back.%date:~0,2%.sql
echo Done!

おそらく、今日を01、02、03、...、31としてバックアップファイルを作成する必要があります。

back.01.sql
back.02.sql
back.03.sql

CMDから実行すると、実際には期待どおりに作成されますが、スケジューラーから実行すると、次のようになります。

back.Mo.sql
back.Tu.sql
back.We.sql

月の日の番号で実際に作成されるようにするには、どの日付形式を使用する必要がありますか?

4

2 に答える 2

3

Windowsバッチで日付と時刻を操作するのは面倒です。

最も堅牢なソリューションは、WMICを使用してローカルの日付と時刻を取得することです。次の形式で値を返します。

YYYYMMDDhhmmss.dddddd-ttt

YYYY   = year
MM     = month
DD     = day
hh     = hour in 24 hour format
mm     = minutes
ss     = seconds
dddddd = fractional seconds
ttt    = time zone (minutes difference from Greenwich Mean Time)

したがって、以下を使用して、変数Editで月の現在の日を取得できます
-開始部分文字列の位置を7から6に修正しました

set curDate=
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined curDate set curDate=%%x
set day=%curDate:~6,2%

この手法の大きな利点は、ロケール設定に関係なく、世界中のすべてのWindowsマシンで機能することです。


テクニックが挿入されたコードは次の
とおりです編集-7から6に開始部分文字列の位置を修正

@echo off
echo Running dump...
set curDate=
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined curDate set curDate=%%x
set "day=%curDate:~6,2%"
"D:\wamp\bin\mysql\mysql5.5.16\bin\mysqldump" --host="localhost" --user="****" --password="****" database> "D:\wamp\backup\mysql\back.%day%.sql"
echo Done!
于 2012-06-11T15:55:28.360 に答える
0

dd.MM.yyyyタスクが実行されるアカウントの地域設定をセットアップするだけです。(少なくともWindows XPの場合は、コントロールパネルまたはレジストリHKCU \ Control Panel \ International\sShortDateを使用してください。

于 2012-06-11T15:59:48.703 に答える