У меня есть сценарий, который я пытаюсь получить, чтобы отсортировать каталог и открыть все zip-файлы и сохранить текстовые файлы в один каталог. Вот код:Открытые zip-файлы во вложенных каталогах с ошибкой «неожиданный токен»
#Script to open zip files in tree
New-Item E:\Files -type directory
Get-ChildItem -Path E:\SNL_Insurance\* -Recurse -Exclude "*.md5"|
ForEach-Object {
$file = $_
write-host $file;
$destination = "E:\Files"
$shell = New-Object -com shell.application
$zip = $shell.NameSpace($file) |
foreach($item in $_.items()){
$shell.Namespace($destination).copyhere($item)
}
}
Я думаю, что почти есть, но постоянно получаю эту ошибку (любая разработка на трубопроводе будет полезно):
Unexpected token 'in' in expression or statement.
At E:\Expand-ZIPFile.ps1:14 char:19
+ foreach($item in <<<< $_.items()){
+ CategoryInfo : ParserError: (in:String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
EDIT: Ааа ... спасибо это различие. Я сделал ваши изменения, но после каждого из моих проверок «write-host», чтобы увидеть имя файла, я получаю следующую ошибку: `Вы не можете вызвать метод в нулевом значении. В E: \ Expand-ZIPFile.ps1: 14 char: 30 + foreach ($ item in $ zip.items < < < <()) {+ CategoryInfo: InvalidOperation: (items: String) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull
EDIT2: Таким образом, исходный код копирует файлы в новый каталог, но также копирует весь zip-файл. Я попытался добавить оператор if только для копирования файлов, которые являются .txt, но код просто проходит через каждый каталог без копирования чего-либо. Если у вас есть идея, которая будет оценена по достоинству, поскольку я исчерпал все свои идеи. Вот код:
new-Item E:\Files -type directory
Get-Childitem -path E:\SNL_Insurance\* -recurse -exclude "*.md5" |
Foreach-object {
$file = $_
write-host $file;
$destination = "E:\Files"
$shell = new-object -com shell.application
$zip = $shell.NameSpace($file.Fullname)
foreach($item in $zip.items()){
if ($item.Extension -eq ".txt") {
$shell.Namespace($destination).copyhere($item)
}
}
}
Благодарности @AnsgarWiechers вы слишком полезно! Я новичок в этом powerhell jazz – CRa
сделано. http://stackoverflow.com/questions/31172579/only-copy-certain-file-types-after-unzipping – CRa