2016-08-07 18 views
0

모든 * .Z 파일을 현재 디렉토리에서 압축을 풀고 싶습니다 (7-Zip 지원 LZW/UNIX 압축).7-Zip 및 PowerShell을 사용하여 아카이브 된 파일의 내용 추출

이것이 작동하지 않는 이유를 알 수 없습니다. PowerShell을 사용하여 파일이있는 파일 이름 및 디렉터리의 전체 경로를 재귀 적으로 얻는 방법을 알고 있습니다. 또한 7-zip을 사용하여 파일을 추출하는 방법을 알고 있습니다. 그러나이 두 가지를 맞추려고 노력하는 것은 효과가 없습니다. (no space between the o and directory is how 7-zip expects the output directory)

Get-ChildItem -Recurse *.Z | foreach ($_) {7z.exe e $_.FullName -o$($_.Directory)} 

Get-ChildItem -Recurse *.Z | foreach ($_) {7z.exe e $_.FullName -o${_.Directory}} 

을이 FullName으로 내가 원하는 파일을 받고 있으며, Directory 올바른 경로 :

Get-ChildItem -Recurse *.Z | foreach ($_) {7z.exe e $_.FullName -o$_.Directory} 

나는 또한 시도 : 여기에 내가 가진 무엇 . 그러나 파일을 디렉토리가 아닌 .Z 경로로 출력하려고 시도합니다. 나는 그것이 옳다는 것을 안다.

Get-ChildItem -Recurse *.Z | Select Directory 

그것이 내가 가고 싶어하는 곳이다.

공간이 없지만 동일한 디렉토리가 필요한 이유가 확실하지 않은 것으로 가정합니다. 심지어 변수를 수동으로 정의하고 문제없이 전달했습니다.

그래서 같은 디렉토리로 출력하려고 할 때 처리 할 파일이 없다는 것을 나타내는 7-zip이 있는데 이유는 모르겠지만 Directory 변수는 전달되지 않지만 파일 이름은 다시는 의미가 없습니다. 파일 당 샘플 출력 :

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 

Scanning the drive for archives: 
1 file, 226 bytes (1 KiB) 

Extracting archive: E:\Files\2014\more_cowbell\myfancyunixcompresseddocument.txt.Z 
-- 
Path = E:\Files\2014\more_cowbell\myfancyunixcompresseddocument.txt.Z 
Type = Z 


No files to process 
Everything is Ok 

Files: 0 
Size:  0 
Compressed: 226 

내가 하나 개의 특정 출력 디렉터리 (NO 변수)를 지정하는 경우 그것은 잘 작동하지만 내가 그 자리에 추출하려는 인해 다수의 하위 디렉토리와 그들 사이의 충돌하는 파일 이름.

모든 * .Z 파일을 현재 디렉토리에서 압축을 풀고 싶습니다 (7-Zip 지원 LZW/UNIX 압축).

답변

1

-o 매개 변수는 변수 $($var)와 doublequoted 문자열 내부에 있어야한다 :

속임수를 썼는지
Get-ChildItem -Recurse *.z | %{ 7z e $_.FullName "-o$($_.Directory)"} 
+0

! 고맙습니다! –