У меня есть одна папка, которая будет содержать нижеуказанные файлы:
destiny.txt
destiny1.txt
destiny2.txt
destiny3.txt
destiny4.txt
destiny5.txt
destiny6.txt
destiny7.txt
Из которых destiny1.txt, destiny4.txt, destiny6.txt из batch1.
Я использую его 7zip
для архивирования файлов.
Могу ли я передать эти 3 файла за один шаг для создания DestinyTest.zip
?
Является ли это возможным?
решение1
Могу ли я передать эти 3 файла за один шаг для создания
DestinyTest.zip
?
Вы можете использовать версию 7zip для командной строки, которая называется 7z
.
Из командной строки:
7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
a
- Добавляет файлы в архив.-tzip
- Указывает тип архива (мы создаемzip
архив).
дальнейшее чтение
решение2
Если у вас есть файл со списком файлов для создания zip-архива, например
создать список файлов для архивации, по одному на каждой строке. Это @-список, со времен DOS, ряд программ сделает это для каждой строки.
Вы можете создать такой файл с помощью dir /b destin*.* > zipme.lst
, а затем удалить строки в редакторе ASCII (Блокноте или Edit).
type zipme.lst destiny1.txt destiny4.txt destiny6.txt 7za a -tzip DestinyTest.zip @zipme.lst
Это найдет zipme.lst и добавит все файлы, перечисленные в нем. Это может быть длиннее командной строки, и у вас есть некоторый контроль над этим.
решение3
У меня была похожая проблема, и я хотел сделать это с помощьюпакетный скрипт. Вот как:
В примере ниже скрипт ищет все файлы .csv, начинающиеся с «cell_cfg» и «slave_cfg», собирает их и архивирует в один файл с именем «cfg.7z», который хранится в подкаталоге с именем «zip»:
@ECHO OFF
setlocal enableDelayedExpansion
mkdir zip
ECHO collecting filenames...
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
FOR %%i IN (cell_cfg*.csv) DO (
ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
SET filenames=!filenames!" "%%i
)
)
FOR %%i IN (slave_cfg*.csv) DO (
ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
SET filenames=!filenames!" "%%i
)
)
set filenames=%filenames%"
%filenames%
(Измените путь к файлу 7z.exe и имена файлов/папок. Если вы хотите .zip вместо .7z, переименуйте строки:
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
в
set filenames="C:\Program Files\7-Zip\7z.exe" a -tzip "zip/cfg.zip
)
Я сохранил его как 'zip_cfg.bat' и поместил его в папку с файлами, которые я хочу заархивировать. Затем я могу вызвать его в командной строке: сначала перейдите в папку с файлами, затем просто вызовите:
zip_cfg.bat
Если вы хотите заархивировать все файлы в папке ("*"), часть 'FIND /I "zip_cfg.bat" 1>NUL' останавливает скрипт от архивирования самого пакетного файла.
Надеюсь, это кому-то поможет... :)