2017-02-06 11 views
1

は、ここで私は、私は特定のフォルダに解凍したいいくつかの* .zipファイルを持っているzip名で別のフォルダを作成せずに、複数のzipを1つのフォルダに抽出する方法は? PowerShellの

$today = (Get-Date).ToString('dd_MM_yyyy') 
$LocalPath = "C:\Builds\$today" 
New-Item -ItemType directory -Path $LocalPath 
$RemotePath = "C:\Builds\zip\$today" 
$Max_hours = "-5" 
#Max_mins = "-5" 
$Curr_date = get-date 

#Checking date and then copying file from LocalPath to RemotePath 
Foreach($file in (Get-ChildItem $RemotePath)) 
{ 
    if($file.LastWriteTime -gt ($Curr_date).addhours($Max_hours)) 
    { 

     Get-ChildItem "C:\Builds\zip\$today\*pc*.*" | % {& "C:\Program Files\7-Zip\7z.exe" "x" "-aoa" $_.fullname "-oC:\Builds\$today"} 
    } 
    ELSE 
    {"not extracting $file" 
    } 

} 

PowerShellで私のスクリプトです。問題は、7zipが* .zipという名前のサブフォルダを作成し、このフォルダにファイルを抽出することです。

例: a.zipb.zipc.zipのファイルがあり、それらをビルドフォルダに正確に抽出します。今、私のコマンドの後、彼らはに抽出されます:

は(ここでは、ファイルa.zip)/ A /を構築します

は/ B /(ここではファイルb.zip)

は、/ C /(ここでのビルドビルドc.zip files)

これらはすべて、完全なディレクトリパスを持つBuilds /(ここでは、a、b、cファイル)に入れたいと思っています。 これには7zipオプションがありますか?

「-e」オプションは、フォルダパスを持たないすべてのファイルをexctractし、それでは私が探しているものです。あなたはPowerShellを使用している場合

答えて

0

V5あなたは7zipをするのではなく、Expand-Archiveを使用することができます。

Get-ChildItem "C:\Builds\zip\$today\*pc*.*" | % {Expand-Archive $_ -DestinationPath "C:\Builds\$today"} 

EDIT:コマンドを使用しているとき、私はフォルダが作成されません

。ファイル含む

Zipファイル:

zip file

が抽出されて何Expand-Archive C:\aaaa\nuget350.zip -DestinationPath C:\bbbb

実行:

enter image description here

+0

することは、残念ながら、このコマンドは、まだサブフォルダ –

+0

があるよろしいですことを作成しますフォルダがcでないので、zipファイル内のフォルダではありませんコマンドによってreated。私はこの事例を示すために投稿を編集しました。 –

+0

Ahh thats問題数日前にすべてがうまくいっていたので混乱しましたが、今私は最後のビルドで顧客がそのサブフォルダにすべてを詰め込んでいるので、私の質問は今は無意味です。ありがとう –

関連する問題