2010-12-27 17 views
12

これを正しく行うにはどうすればよいですか?私は、現在の日付と時刻にmysqldumpによって生成されているSQLファイルに名前をつけようとしています。私はすでにこのサイトでいくつかの研究を行っており、ここにコードがあります:How to get current datetime on Windows command line, in a suitable format for using in a filename?日付と時刻をファイル名として使用してバックアップファイルを生成

私の現在のコードとそれを混ぜてみました。ファイルは現在の日付と時刻に名前が付けられますが、唯一の1kbのファイルであり、.sqlファイルは生成されません。 これは7 KBのsqlファイルであるはずです。

@For /f "tokens=2-4 delims=/ " %%a in ('date /t') do @(set mydate=%%c-%%a-%%b) 
@For /f "tokens=1-2 delims=/:" %%a in ('time /t') do @(set mytime=%%a%%b)  

@echo mydate= %mydate% 
@echo mytime= %mytime% 

mysqldump -u root -p --add-drop-table --create-options --password= onstor >c:\%mydate%_%mytime%.sql 

UPDATE 私はそれをこの方法を行うとき、それはうまく機能するのでmysqldumpをコマンドに問題がないと思います。以下のコードは日付をファイル名として使用しています。

@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
    Set Month=%%A 
    Set Day=%%B 
    Set Year=%%C 
)  

@echo DAY = %Day% 
@echo Month = %Month% 
@echo Year = %Year%  

mysqldump -u root --add-drop-table --create-options --password= onstor >c:\%Day%-%Month%-%Year%.sql 

ご協力ありがとうございました。

答えて

30

はLinuxでは、単純にファイル名に日付と時刻を表示するように$(date +%Y-%m-%d-%H.%M.%S)を入れて、それは次のようになります。

mysqldump -u <user> -p <database> | bzip2 -c > <backup>$(date +%Y-%m-%d-%H.%M.%S).sql.bz2 

+1

これは 'cron'で動作しますか? – fishcracker

+0

質問はWindows固有です。 – MxyL

+0

Linuxの場合: '$(日付+%Y-%m-%d-%H.%M.%S)'しかし、WINDOWSの場合はどうなりますか? –

4

あなたのmysqldumpコマンドの構文が間違っていると思います。あなたが-p--pasword=の両方を使用

mysqldump -u root -p --add-drop-table --create-options --password= onstor 

、あなたはオプションを1つだけ使用する必要があります。パスワードの前にスペースがあります。

エラーメッセージを表示するには、コマンドラインでmysqldumpコマンドを実行してみてください。または、バッチファイル内のコマンドの最後に2>&1を追加します。次に、出力ファイルにエラーメッセージが表示されます。

mysqldump -u root --add-drop-table --create-options --password=onstor >c:\%mydate%_%mytime%.sql 2>&1 
+0

Iドン(このコマンドはまた、BZIP2を使用してファイルを圧縮します) mysqldumpコマンドに問題があると思っています。私の編集 – user225269

+0

@ user225269をご覧ください.2番目の例ではmysqldumpコマンドが異なります。しかし、とにかく、あなたは私たちに1kbのファイルが含まれていることを示すことができますか? – wimh

関連する問題