Batch file 使用日期和时间作为文件名生成备份文件

Batch file 使用日期和时间作为文件名生成备份文件,batch-file,mysqldump,Batch File,Mysqldump,我如何正确地做到这一点。我试图将mysqldump生成的sql文件命名为当前日期和时间。我已经在这个网站上做了一些研究,并在这里找到了一个代码: 试图把它和我当前的代码混在一起,我想出了这个。该文件以当前日期和时间命名,但它只是一个1kb的文件,不生成.sql文件。 它应该是一个7KB的sql文件 @For /f "tokens=2-4 delims=/ " %%a in ('date /t') do @(set mydate=%%c-%%a-%%b) @For /f "tokens=1-2 d

我如何正确地做到这一点。我试图将mysqldump生成的sql文件命名为当前日期和时间。我已经在这个网站上做了一些研究,并在这里找到了一个代码:

试图把它和我当前的代码混在一起,我想出了这个。该文件以当前日期和时间命名,但它只是一个1kb的文件,不生成.sql文件。 它应该是一个7KB的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
更新
我不认为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

请帮忙,谢谢

我认为mysqldump命令的语法是错误的

mysqldump -u root -p --add-drop-table --create-options --password= onstor
如果同时使用
-p
-pasword=
,则只能使用一个选项。密码前有一个空格

只需尝试在命令行上运行mysqldump命令即可查看错误消息。或者在批处理文件中的命令末尾添加
2>&1
。然后,您还会在输出文件中看到错误消息

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

在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
mysqldump-u-p | bzip2-c>$(日期+%Y-%m-%d-%H.%m.%S)

(此命令还使用bzip2压缩文件)

对于那些希望在crontab中使用此命令的人,在这种情况下,它有点不同:

30 01 * * * /opt/bitnami/mysql/bin/mysqldump -u root --password=MySecretPass database_name | gzip >  /path/backup/`date "+\%d-\%m-\%y_\%H:\%M"`.gz

我认为mysqldump命令没有问题,请参阅我的edit@user225269:在第二个示例中,mysqldump命令不同。但是无论如何,你能告诉我们1kb文件包含什么吗?问题是特定于windows的。对于linux:
$(日期+%Y-%m-%d-%H.%m.%S)
对,但是windows是什么?