这是我的全部剧本。除了最后2行之外,所有的内容都用于查找压缩的PDF文件并移动它们。
在第一部分中,脚本检查文件夹中每个pdf文件的前几个字节。如果它们以“pk*”开头,它们是zip文件,并被移动到zipped文件夹中。对于每个PDF/ZIP文件,在它旁边的文件夹中有一个关联的HL7文件。
这些也需要移动到同一个文件夹。从那里,zip文件需要解压缩并重新定位到“unzipped”
$pdfDirectory = 'Z:\Documents\16_Med._App\Auftraege\PDFPrzemek\struktur_id_1225\ext_dok'
$newLocation = 'Z:\Documents\16_Med._App\Auftraege\PDFPrzemek\Zip'
Get-ChildItem "$pdfDirectory" -Filter "*.pdf" | foreach {
if ((Get-Content $_.FullName | select -First 1 ) -like "PK*") {
$HL7 = $_.FullName.Replace("ext_dok","MDM")
$HL7 = $HL7.Replace(".pdf",".hl7")
move $_.FullName $newLocation;
move $HL7 $newLocation
}
}
Get-ChildItem 'Z:\Documents\16_Med._App\Auftraege\PDFPrzemek\Zip' |
Expand-Archive -DestinationPath 'Z:\Documents\16_Med._App\Auftraege\PDFPrzemek\Zip\unzipped' -Force
所以我需要找到一种方法来让这个函数解压缩文件,即使它们没有合适的扩展名...
就像@Ansgar说的那样:
Param (
$SourcePath = 'C:\Users\xxx\Downloads\PDF',
$ZipFilesPath = 'C:\Users\xxx\Downloads\ZIP',
$UnzippedFilesPath = 'C:\Users\xxx\Downloads\Unzipped'
)
$VerbosePreference = 'Continue'
#region Test folders
@($SourcePath, $ZipFilesPath, $UnzippedFilesPath) | Where-Object {
-not (Test-Path -LiteralPath $_)
} | ForEach-Object {
throw "Path '$_' not found. Make sure that the folders exist before running the script."
}
#endregion
#region Get all files with extension .pdf
$Params = @{
Path = Join-Path -Path $SourcePath -ChildPath 'ext_dok'
Filter = '*.pdf'
}
$PDFfiles = Get-ChildItem @Params
Write-Verbose "Got $($PDFfiles.count) files with extension '.pdf' from '$($Params.Path)'"
#endregion
#region Move PDF and HL7 files
$MDMpath = Join-Path -Path $SourcePath -ChildPath 'MDM'
foreach ($PDFfile in ($PDFfiles | Where-Object {
(Get-Content $_.FullName | Select-Object -First 1) -like 'PK*'})
) {
$MoveParams = @{
Path = $PDFfile.FullName
Destination = Join-Path -Path $ZipFilesPath -ChildPath ($PDFfile.BaseName + '.zip')
}
Move-Item @MoveParams
Write-Verbose "Moved file '$($MoveParams.Path)' to '$($MoveParams.Destination)'"
$GetParams = @{
Path = Join-Path -Path $MDMpath -ChildPath ($PDFfile.BaseName + '.hl7')
ErrorAction = 'Ignore'
}
if ($HL7file = Get-Item @GetParams) {
$MoveParams = @{
Path = $HL7file
Destination = $ZipFilesPath
}
Move-Item @MoveParams
Write-Verbose "Moved file '$($MoveParams.Path)' to '$($MoveParams.Destination)$($HL7file.Name)'"
}
}
#endregion
#region Unzip files
$ZipFiles = Get-ChildItem -Path $ZipFilesPath -Filter '*.zip' -File
foreach ($ZipFile in $ZipFiles) {
$ZipFile | Expand-Archive -DestinationPath $UnzippedFilesPath -Force
Write-Verbose "Unzipped file '$($ZipFile.Name)' in folder '$UnzippedFilesPath'"
}
#endregion
一些小贴士:
param()
子句,以包含所有可以更改的变量。get-childitem-path xxx
而不是get-childitem-xxx
.哈希表
。这使得代码的宽度更紧凑,更容易阅读。#region
和#endregion
对代码进行分组。问题内容: 我尝试解压缩150个zip文件。所有zip文件都使用不同的名称,它们都分散在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。我想将每个存档提取到与原始zip文件名相同名称的单独文件夹中,与原始zip文件位于同一位置。我的代码是: 我运行代码后,什么都没有发生。在此先感谢您的任何帮助。 问题答案: 更新: 最后,这段代码对我有用:
问题内容: 在Linux机器上,我想遍历文件夹层次结构并获取其中所有不同文件扩展名的列表。 从外壳实现这一目标的最佳方法是什么? 问题答案: 试试这个(不确定这是否是最好的方法,但是可以用): 它的工作方式如下: 查找当前文件夹中的所有文件 打印文件扩展名(如果有) 制作唯一的排序列表
我是Bash新手,正在尝试压缩子文件夹,但它不起作用。 在命令之后 脚本: 我该怎么做?
问题内容: 我想更改特定文件夹中文件的扩展名。我在论坛上阅读了有关此主题的信息。使用“确实”的想法,我编写了以下代码,我希望它可以工作,但不能。我很感谢您为我的失误提供任何指导。 问题答案: 在对源文件是不必要的,因为只需要在源和目标路径来完成这项工作。而且,始终返回,因此调用其返回值没有任何意义。 我简单地删除了两个。检查是否适合您。
本文向大家介绍PHP解压ZIP文件到指定文件夹的方法,包括了PHP解压ZIP文件到指定文件夹的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP解压ZIP文件到指定文件夹的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结
当我在Mac OSX中使用内置的zip压缩程序压缩文件时,会在解压缩的zip中创建一个名为“_MACOSX”的额外文件夹。 我可以调整我的设置,以防止创建此文件夹,还是需要购买第三方压缩工具? 更新:我刚刚发现了一个OSX的免费应用,它解决了我的问题:“YemuZip” 更新2:YemuZip不再是免费软件。