Я надеюсь, что смогу получить столь необходимый совет для части работы, которую я несколько раз бросал. * Примечание. У меня нет информации о текущем дизайне.
Текущий процесс
Мы получаем заявки через наш веб-сайт, как только заявка завершена, создается КАТАЛОГ с уникальным идентификатором в качестве имени - Затем создается ПОДРАЗДЕЛЕНИЕ с другим уникальным идентификатором. Они находятся в папке PARENT, называемой «Приложения»
. В этой подкатегории есть список файлов;
- Application_Form.pdf (существует только 1)
- Proof_of_address .jpg (заявитель может загрузить от 1 до 10 изображений)
- Passport_Photo.jpg (заявитель может загрузить от 1 до 10 изображений)
- Photo.jpg (заявитель может загрузить от 1 до 10 изображений)
- Приложение. xml (существует только 1)
В настоящее время у нас есть расписание задач, запускающее скрипт .bat каждые 5 минут, которые перемещают каждую папку в каталоге «Applications» на внутренний сервер.
Проблема, с которой мы часто сталкиваемся, заключается в том, что скрипту не важно, какие файлы находятся в этих каталогах, поэтому если заявитель проходит путь загрузки документов не все документы проверяются.
Решение
Создайте сценарий PowerShell, который;
- Извлекает имена файлов из приложений. xml
- «если существует» с этими именами файлов.
- Если все файлы существуют в каталоге, переместите каталог верхнего уровня на внутренний сервер.
- Если его не существует, пропустите и go к следующему каталогу. .
Приложения. xml фиксирует все имена файлов и может рассматриваться как «евангелие».
XML Пример
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENTS>
<DOCUMENT>
<DOCTYPE>APPLIC</DOCTYPE>
<FILENAME>Proof1 Bank Statement.jpg</FILENAME>
<IMAGES>
<IMAGE SOURCE="Proof1_721ee515-8a29-4898-acb1-696acfa288a1.jpg"></IMAGE>
</IMAGES>
</DOCUMENT>
<DOCUMENT>
<DOCTYPE>APPLIC</DOCTYPE>
<FILENAME>Passport1.jpg</FILENAME>
<IMAGES>
<IMAGE SOURCE="Passport1_721ee515-8a29-4898-acb1-696acfa288a1.jpg"></IMAGE>
</IMAGES>
</DOCUMENT>
<DOCUMENT>
<DOCTYPE>PHOTO</DOCTYPE>
<FILENAME>Photo.jpg</FILENAME>
<IMAGES>
<IMAGE SOURCE="Photo1_721ee515-8a29-4898-acb1-696acfa288a1.jpg"></IMAGE>
</IMAGES>
</DOCUMENT>
<DOCUMENT>
<DOCTYPE>APPLIC</DOCTYPE>
<FILENAME>Application_Form_721ee515-8a29-4898-acb1-696acfa288a1.pdf</FILENAME>
<IMAGES>
<IMAGE SOURCE="Application_Form_721ee515-8a29-4898-acb1-696acfa288a1.pdf"></IMAGE>
</IMAGES>
</DOCUMENT>
</DOCUMENTS>
Это мой сценарий:
$Path = "C:\Temp\Scripts\Transfer\Applications\*\*\*.xml"
Get-ChildItem -Path $Path -Filter *xml | ForEach-Object {
$XPath = "//IMAGE"
Select-Xml -Path $Path -XPath $Xpath | Select-Object -ExpandProperty node
}
}
Это выводит как;
SOURCE
------
Proof1_721ee515-8a29-4898-acb1-696acfa288a1.jpg
Passport1_721ee515-8a29-4898-acb1-696acfa288a1.jpg
Photo1_721ee515-8a29-4898-acb1-696acfa288a1.jpg
Application_Form_721ee515-8a29-4898-acb1-696acfa288a1.pdf
Имея это в виду, я застрял на первом этапе, используйте PowerShell для захвата имен файлов в приложениях. xml. Мне удалось получить вышеуказанный результат, но только в объемном виде. Как можно разделить этот список на отдельные результаты, чтобы я мог затем выполнить функцию «если существует», чтобы проверить каталог для вышеуказанных файлов, и, если все вышеперечисленное существует, скопировать каталог верхнего уровня в Приложениях на внутренний сервер?
Любая помощь будет высоко ценится!