PowerShell で zip アーカイブを開いて、その中のファイルを特定の場所に移動しようとしました。ただし、常にzipフォルダーのみを移動します。私は何を間違っていますか?
これは私が今持っているものです:
Get-ChildItem C:\zipplayground\*.zip | % {"C:\Program Files (x86)\7-Zip\7zG.exe";
Move-Item $_ C:\unzipplayground\}
PowerShell で zip アーカイブを開いて、その中のファイルを特定の場所に移動しようとしました。ただし、常にzipフォルダーのみを移動します。私は何を間違っていますか?
これは私が今持っているものです:
Get-ChildItem C:\zipplayground\*.zip | % {"C:\Program Files (x86)\7-Zip\7zG.exe";
Move-Item $_ C:\unzipplayground\}
正しい答えは次のようなものであるべきだと思います:
Get-ChildItem C:\zipplayground\*.zip | % {& "C:\Program Files\7-Zip\7z.exe" "x" $_.fullname "-oC:\unzipplayground"}
Alroc はほぼ正しかったのですが$_.fullname
、引用符の間が機能せず、-o
7z のパラメーターが欠落していました。7z.exe
の代わりに使用していますが7zg.exe
、この方法で正常に動作します。
参考までに、コマンド ラインのヘルプは次の場所にあります。http://sevenzip.sourceforge.jp/chm/cmdline/
基本的には「eXtract」と「出力ディレクトリ」のx
略です。-o
7zip のようなオープン ソースの exe/dll を避けたい場合は、powershell 用の PSCX モジュールをインストールし、expand-archive を使用します。PSCX の要件は、少なくとも .net 4 (私は 4.5 を使用) および powershell 3.0 であることに注意してください。
テストする7Zipはありませんが、7Zipに何を操作するかを指示しておらず、ZIPファイルを自分で宛先に移動しているため、失敗していると思います。これを試して:
Get-ChildItem C:\zipplayground\*.zip | % {invoke-expression "C:\Program Files (x86)\7-Zip\7zG.exe x $_.FullName c:\unzipplayground\";}