![7 zip を使用して 1 つのコマンドで複数のファイルを zip に渡す方法は?](https://rvso.com/image/1457470/7%20zip%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%201%20%E3%81%A4%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%20zip%20%E3%81%AB%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95%E3%81%AF%3F.png)
以下のファイルが含まれるフォルダーが 1 つあります。
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 つのファイルを 1 つのステップで渡して作成できますかDestinyTest.zip
?
出来ますか?
答え1
これら 3 つのファイルを 1 つのステップで渡して作成できますか
DestinyTest.zip
?
7zip のコマンドライン バージョンを使用できます7z
。
コマンドラインから:
7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
a
- ファイルをアーカイブに追加します。-tzip
- アーカイブの種類を指定します (zip
アーカイブを作成しています)。
参考文献
答え2
zipを作成するためのファイルをリストしたファイルがある場合、例:
アーカイブするファイルのリストを、各行に 1 つずつ作成します。これは 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
私も同じような問題を抱えていて、バッチスクリプト方法は次のとおりです。
以下の例では、スクリプトは「cell_cfg」および「slave_cfg」で始まるすべての .csv ファイルを検索し、それらを収集して、「zip」というサブディレクトリに保存される「cfg.7z」という 1 つのファイルに圧縮します。
@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 のパスとファイル/フォルダ名を調整します。.7z ではなく .zip が必要な場合は、次の行の名前を変更します。
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
フォルダー内のすべてのファイル ("*") を zip 圧縮する場合、「FIND /I "zip_cfg.bat" 1>NUL」の部分により、スクリプトがバッチ ファイル自体を zip 圧縮するのを停止します。
これが誰かの役に立つことを願います... :)