0

xxxx次のように DB バックアップ ファイルを実行すると:

@echo off
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" -hlocalhost -uroot -pxxxxx --all-databases > "D:\DB backups\AllDBs_%date%.sql"

それは正常に動作します。%time% プレースホルダーを追加するとすぐにバスが機能しなくなります。

@echo off
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" -hlocalhost -uroot -pxxxxx --all-databases > "D:\DB backups\AllDBs_%date%_%time%.sql"

ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません。

なぜこれが機能しないのか誰にも分かりますか? 私はインターネットを検索しましたが、うまくいかないと言っているものは見つかりませんでした。

4

2 に答える 2

2

日付と時刻が必要な場合は、次の方法を使用することをお勧めします。

for /f "skip=1" %%x in ('wmic OS GET LocalDateTime') do if not defined LocalDateTime set LocalDateTime=%%x
set MyDate=%LocalDateTime:~0,8%
set MyTime=%LocalDateTime:~8,6%

これは、既知の形式(つまり、区切り文字のない数字のみ)であることが保証されています。また、ロケール設定に関係なく、文字が無効になるという問題は絶対にありません。

于 2012-05-30T08:38:07.547 に答える
0

バッチでは%time%、有効な Windows ファイル名に対して無効な文字が変数に含まれています。

これを使用してそれらを削除し、無効な文字を に置き換えます-

%DATE:/=-%%TIME::=-%
于 2012-05-30T08:33:24.520 に答える