Windowsでは、いくつかのファイルをZip
にすることができます。
右クリック - >送信先 - >圧縮(zip)フォルダ
そして、.Zip
ファイルをダブルクリックしてunzip
を実行し、ファイルを抽出します。
スクリプト(.batファイル)からこれらの機能を適用する方法はありますか? サードパーティをインストールする必要なしに
2013年には、それは不可能でした。 MSはこのための実行ファイルを提供していません。
これを行うためのVBS方法については、このリンクを参照してください。 https://superuser.com/questions/201371/create-Zip-folder-from-the-command-line-windows
Windows 8以降では、デフォルトで.Net Framework 4.5がインストールされ、 System.IO.Compression.ZipArchive およびPowerShellが使用可能になります。これを実現するスクリプトを記述できます。 https:// stackoverflowを参照してください。 com/a/26843122/71312
Steven PennyのPowerShellソリューションを拡張するには、次のようにpowershell.exeを呼び出してバッチファイルに組み込みます。
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.Zip', 'bar'); }"
Ivan Shilo氏が述べたように、これはPowerShell 2では機能しません。PowerShell3以降および.NET Framework 4が必要です。
.NET 4.5 以降、PowerShellはこれを実行できます。
Add-Type -A System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.Zip')
[IO.Compression.ZipFile]::ExtractToDirectory('foo.Zip', 'bar')
最後の2行では、bar
とfoo
をフォルダに付けたい名前、または既存のフォルダの名前に置き換えることができます。どちらの場合もfoo.Zip
はZipファイルとして機能し、名前を付けて保存したり解凍したりします。
Java がインストールされている場合は、 jar コマンドを使用してZipアーカイブに圧縮できます。
jar -cMf targetArchive.Zip sourceDirectory
c =新しいアーカイブファイルを作成します。
M =マニフェストファイルをアーカイブに追加しないことを指定します。
f =ターゲットファイル名を示します。
Microsoft.PowerShell.Archive
から使用できます。
例えば。:
Test
フォルダー全体からresult.Zip
を作成します。
Compress-Archive -Path C:\Test -DestinationPath C:\result
指定されたTest
フォルダー内のresult.Zip
の内容を抽出します。
Expand-Archive -Path result.Zip -DestinationPath C:\Test
これはZipではありませんが、Windowsツールを使用してファイルを圧縮する唯一の方法は次のとおりです。
makecab <source> <dest>.cab
解凍するには:
expand <source>.cab <dest>
高度な例(ss64.comから):
Create a self extracting archive containing movie.mov:
C:\> makecab movie.mov "temp.cab"
C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe"
C:\> del /q /f "temp.cab"
より詳しい情報: makecab 、 expand 、 makecabの高度な使用方法
7-Zipを使う:
Zip :フォルダfoo
があり、それをmyzip.Zip
にZipします。
"C:\Program Files\7-Zip\7z.exe" a -r myzip.Zip -w foo -mem=AES256
解凍 :現在のディレクトリ(myzip.Zip
)に解凍します(./
)。
"C:\Program Files\7-Zip\7z.exe" x myzip.Zip -o./ -y -r
私はこの正確な質問に答えることを探していました、そして私の調査から、DiryBoyの応答は正確であるようです。
Compact.exeプログラムはファイルを圧縮しますが、高度に圧縮されたファイル(またはファイルのセット)は作成できません。 Windowsでドライブ文字やパーティションを右クリックしたときに表示されるオプションと似ています。ファイルを圧縮するだけでなく、クリーンアップ(一時ファイルの削除など)を行うこともできます。圧縮ファイルはまだアクセス可能ですが、容量が少ないドライブにスペースを作成するために圧縮されています。
私は私のコンピュータ上で持っていることが偶然しなかったcompress.exeも見つけました。これは、ほとんどのWindowsマシンではネイティブではなく、2003リソースキットの一部です。それは一種のzipファイルを作成しますが、それは本当にWindowsセットアップディスクからのファイルにもっと似ています(ファイル拡張子または名前の最後の文字としてアンダースコアを持っています)。そしてextract.exeコマンドはそれらのファイルを抽出します。
ただし、GUIを介してネイティブに実行できるのであれば、コマンドライン内でバッチ、.vbs、またはその他の種類のスクリプトを使用して実行する方法があります。 WindowsにはZipファイルを作成するための 'send to'オプションがあるので、コマンドラインでそれを行う方法があることを知っていました、そして私はいくつかのオプションを見つけました。
これは、Windowsのネイティブコマンドを使用してファイルを圧縮する方法を示す素晴らしいリンクです。
複数のファイルやフォルダを入れ子にしたディレクトリでテストしましたが、問題なく動作しました。コマンドラインのフォーマットに従ってください。
私が見つけたコマンドラインでファイルを解凍する方法もあります。 1つの方法は、zipファイルの内容が何であるかを示すExplorerウィンドウを開くだけです。これらの中には、必ずしもウィンドウにネイティブではないJavaを使用しているものもありますが、非常に一般的であるため、ほぼそうです。
BATファイルにラップされたvbsscriptを使用できます。このコードは相対パスで機能します。
サードパーティのツールや依存関係は不要です。 SOURCEDIR
とOUTPUTZIP
を設定するだけです。
ファイル名:ZipUp.bat
echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs
echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs
echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs
'Create empty Zip file.
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipup.vbs
echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs
echo 'Keep script waiting until compression is done
echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs
echo WScript.Sleep 200 >> _zipup.vbs
echo Loop >> _zipup.vbs
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
del _zipup.vbs
使用例
SET SOURCEDIR=C:\Some\Path
SET OUTPUTZIP=C:\Archive.Zip
CALL ZipUp
あるいは、CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
という行をCScript _zipup.vbs %1 %2
に置き換えてこのファイルをパラメータ化することもできます。その場合は、単にCALL ZipUp C:\Source\Dir C:\Archive.Zip
を呼び出すだけで呼び出すことができます。
オープンソースはあなたの友達です:-)
これがUNZIPです: http://gnuwin32.sourceforge.net/packages/unzip.htm
Zipコマンドもあります。 http://gnuwin32.sourceforge.net/packages/Zip.htm
Binariesのダウンロードで十分です。
スクリプトの一部としてこれを実行する必要がある場合、最良の方法はJavaを使用することです。 binディレクトリがパスにあると仮定すると(ほとんどの場合)、コマンドラインを使用できます。
jar xf test.Zip
javaが直接パス参照に含まれていない場合
C:\Java\jdk1.6.0_03\bin>jar xf test.Zip
あなたはあなたがサードパーティ製ソフトウェアなしでこれをやろうとしていると言います。あなたが.NETを「サードパーティ」のソフトウェアと考えているかどうかはわかりません。
しかし、あなたは.NETであなた自身のコマンドラインユーティリティを作成することができます。数行以上のコードを必要とするべきではありません。
https://msdn.Microsoft.com/ja-jp/library/system.io.compression.zipfile(v=vs.110).aspx
これらすべてのソリューションに問題があります。それらは正確に同じではなく、すべて同じファイルから作成された場合、RMB --> send to --> compressed (zipped) folder
と比較してサイズがわずかに異なるファイルを作成します。ソースフォルダ。私が持っていた最も近いサイズの違いは、300 KBの違いです(スクリプト>手動)。
powershell Compress-Archive -Path C:\sourceFolder -CompressionLevel Fastest -DestinationPath C:\destinationArchive.Zip
(-CompressionLevelに注意してください。 つの可能な値があります :Fastest、NoCompression&Optimal、(デフォルト:Optimal))
作業中のWordPressプラグインフォルダーを.Zipアーカイブに自動的に圧縮する.batファイルを作成したかったので、WordPressサイトにアップロードして、プラグインをテストします。
しかし、何らかの理由で、これらの自動圧縮のいずれでも動作しませんbut手動RMB圧縮では動作します。
また、スクリプトで生成された.Zipファイルは、実際にWordPressプラグインを無効にして、アクティブにできず、WordPress内から削除することもできません。サーバーの「バックサイド」にSSHで接続し、アップロードされたプラグインファイル自体を手動で削除する必要があります。手動でRMBで生成されたファイルは正常に機能しますが。