Нужна помощь в написании командного файла - PullRequest
0 голосов
/ 01 октября 2010

Я пишу командный файл в Windows, который получает один аргумент: имя zip-файла, созданное с помощью 7-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)

Что я должен написать вместо extracted_file_name, если я не знаю имя файла, которое находится внутри zip-файла?

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Вы можете извлечь файл в пустой каталог, где вы можете быть уверены, что это единственный существующий файл.Затем вы можете использовать инструкцию 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

Обратите внимание, что все это работает, только если текущим каталогом является каталог извлечения, в противном случае необходимо соответствующим образом изменить выражения в скобках.

Бонусные ссылки: ссылка для <a href="http://ss64.com/nt/for2.html" rel="nofollow">FOR</a> и <a href="http://ss64.com/nt/for_cmd.html" rel="nofollow">FOR /F</a>- единственные команды, которые делают что-то полезное в пакетном режиме - и которые, очевидно, имеют невозможный синтаксис.: D

0 голосов
/ 01 октября 2010

Я думаю, что 7z имеет команду «l» для просмотра содержимого архива. передать этот вывод в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...