Каждое утро папка получает те же самые имена почтовых файлов, которые были переданы ей. В настоящее время у меня есть скрипт, который будет проверять файлы без замятия, и если они существуют, создается архивная папка, и они перемещаются туда. Затем zip-файлы распаковываются, а затем zip-файл удаляется.Проверить файлы с одинаковыми именами в папке с разными расширениями, если существует, переместить один из
Пришло новое условие, что 1 файл не будет иметь ежедневную передачу, но он будет еженедельным (случайный день недели) и что связанный с ним незакрепленный файл должен оставаться в папке до тех пор, пока этот zip-файл переносится в.
Как бы я переделал свой код, чтобы проверять зашифрованные имена файлов на non-zipped, а если есть совпадение, чтобы переместить только эти файлы, прежде чем распаковывать остальные?
Мой текущий код: Первые if
тесты тестов для несуществующих zip-файлов. Если существует, новый каталог архива создается с датой. Затем эти не-молнии перемещаются в эту папку.
Вторым if
заявление проверяет файлы zip, если существует, он будет разархивировать каждый, а затем удалить zip-файлы.
$dir = "D:\test"
$date = Get-Date -Format "yyyy-MMM-dd"
if (Test-Path "$dir\*" -Exclude *.zip -PathType Leaf) {
$newDir = New-Item -Type Directory -Path "$dir\Archive\$date" -Force
$nozip = gci -Recurse $dir -Exclude *.zip | where { ! $_.PSIsContainer }
foreach ($file in $nozip) {
Move-Item $file $newDir
}
}
if (Test-Path "$dir\*.zip" -PathType Leaf) {
$list = gci -Recurse $dir -Include *.zip
$shell = New-Object -COM Shell.Application
foreach ($file in $list) {
$zip = $shell.NameSpace($file.FullName)
foreach ($item in $zip.Items()) {
$shell.NameSpace($dir).CopyHere($item)
}
Remove-Item $file
}
} else {
exit
}
Пример сценария:
Папка D: \ Test содержит файлы a.txt, b.txt и C.txt.
Каждое утро файлы B.zip и C.zip, содержащие новый B.txt и C.txt, переносятся в ту же папку D: \ Test.
Почтовые файлы необходимо разархивировать, но соответствующие файлы B.txt и C.txt, которые уже находятся в этой папке, должны быть перенесены в D: \ Test \ Archive, затем B.zip и C.zip можно распаковать, оставив новый файл B.txt и C.txt в D: \ Test, а затем эти zip-файлы будут удалены.
У меня возникли проблемы с тем, что A.zip не переносится ежедневно. Это раз в неделю, и до тех пор, пока A.zip не попадет в папку, A.txt должен остаться в D: \ Test.
Прямо сейчас мой скрипт перемещает все файлы без zip в D: \ Test \ Archive каждый день. Поэтому, когда B.zip и C.zip входят в D: \ Test, после завершения процесса не будет A.txt, он перемещается в D: \ Test \ Archive с остальными файлами.
Так что мне нужно проверить все файлы .txt на .zip-файлы, а если есть совпадение по имени файла, а не по расширению, переместите этот незашифрованный файл в D: \ Test \ Archive. Если нет совпадения, оставьте этот незакрепленный файл в D: \ Test и продолжите обработку тех, которые соответствуют.
Рассмотрите возможность добавления некоторых сценариев с соответствующими именами файлов. Таким образом, 'foo.zip прибывает, уже есть файлы bar и zof -> foo будут извлечены, и теперь есть файлы foo, bar ...' – vonPryz
Ок, @vonPryz, я добавил сценарий процесса. Благодарю. – soMuch2Learn