需要帮助编写批处理文件

时间:2010-10-01 12:55:51

标签: windows batch-file

我正在Windows上编写一个批处理文件,它有一个参数:一个用7-zip创建的zip文件名。

此文件包含一个MySQL备份文件,例如backup.sql

我想恢复给定此zip文件的数据库。

所以,首先我将它提取到这样的临时目录:

path_to_7zip\7z e "%~1" -otemp_dir

现在是我的问题:我怎么知道提取文件的名称(即backup.sql)?

我想写这样的东西:

path_to_mysql\mysql < extracted_file_name

(其中extracted_file_name应为backup.sql

如果我不知道zip文件中的文件名,我应该写什么代替extracted_file_name

2 个答案:

答案 0 :(得分:1)

您可以在空目录中提取文件,您可以确定它是唯一的当前文件。然后,您可以使用for指令在变量中收集此名称,并根据需要使用它。

FOR /F "tokens=*" %%F IN ('dir /b *.sql') DO path_to_mysql\mysql < %%F

请注意,如果存档中有多个SQL文件,则会处理所有这些文件。我认为这可能是一个奖励,但我认为你可以简单地用FOR跳出GOTO


修改:仅使用 /F形式的FOR我忘了“正常”FOR已经完成工作了我们需要。

FOR %%F IN (*.sql) DO path_to_mysql\mysql < %%F

请注意,只有当前目录是提取目录时,所有这些内容才有效,否则您必须相应地更改括号中的表达式。

奖励链接:FORFOR /F的参考 - 只有批量执行某些操作的命令 - 显然有一个不可能的语法。 :d

答案 1 :(得分:0)

我认为7z有一个“l”命令来列出档案的内容。将此输出传递给mysql。