![]() |
Перенос файлов с папки в папку при условии
Добрый день.
Просьба подсказать в написание срипта или батника. Необходимо настроить перенос всех файлов .txt (наименования разные) с директории \EXCEPTIONS\Errors в папку \Inbound\SAFE, с условием что, в файлах .txt в которых есть значение *{2:I103* *{2:I202* *{2:I200* не переносить. |
Powershell:
Код:
dir "D:\temp\from\*.txt" |? {!(gc $_ |Select-String -SimpleMatch '*{2:I103* *{2:I202* *{2:I200*')} |mv -Destination "D:\temp\to" |
Подскажите пожалуйста, скопировались все файлы, т.е условия исключения не выполнилось.
(необходимо что бы .txt в которых есть одна из фраз *{2:I103* *{2:I202* *{2:I200* не переносились) |
Ну так написали бы нормально сразу, а то
Цитата:
Решение для значений *{2:I103* *{2:I202* *{2:I200* Код:
dir "D:\temp\from\*.txt" |? {(gc $_) -notmatch '\*\{2:I(103|202|200)\*'} |mv -Destination "D:\temp\to" |
Результат последнего варианта скрипта, который Вы прислали (без переноса)
----- dir "D:\temp\from\*.txt" |? {(gc $_) -notmatch '\*\{2:I(103|202|200)\*'} |mv -Destination "D:\temp\to" Directory: C:\text2\New1 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 10/20/2022 11:37 AM 668 103.TXT -a--- 10/20/2022 2:00 PM 278 202.TXT -a--- 10/21/2022 11:17 AM 835 asfasfaf.txt -a--- 10/21/2022 11:19 AM 258 dfgsf.txt -a--- 10/20/2022 6:49 PM 282 sdfsfbxc.txt -a--- 10/21/2022 12:40 AM 538 werwer.txt -a--- 10/21/2022 1:37 AM 537 werwrew.txt -a--- 10/21/2022 11:47 AM 616 xcvbxcbcvn.txt Он вывод все варианты, хотя в файлы (103 202) не должны выводится, так как в них есть одно из значений *{2:I103* *{2:I202* *{2:I200* |
Пришлите примеры файлов.
|
К сожалению сами файлы прислать не могу, примеры текста файлов:
WERTYY}{2:I103G22XXXXN} JHGBNM}{2:I199GGH3XXXN} CLDJDMV}{2:I202D33WFXXN} и вообще может любые символы быть указаны. |
Получилось справиться с перемещением, но необходимо добавить условия копирования в другую директорию (до переноса)
$RootDirectoryToCheck = 'C:\text2\New1' $DestinationDirectory = 'C:\text2\New2' $DestinationDirectory2 = 'C:\text2\New3' $TextToFind = '{2:I(103|202|200)' Get-ChildItem -Path $RootDirectoryToCheck -Filter '*.txt' -File -Recurse | where {(Get-Content $_.FullName -TotalCount 1) -notmatch $TextToFind} | Copy-Item -Destination $DestinationDirectory2 && Move-Item -Destination $DestinationDirectory Можете пожалуйста проверить и подсказать, на данный момент по данному скрипту только копирует а перемещение не выполняет. |
Ну так ёлы-палы, где там звёздочки, зачем вы их давали в условии?
Код:
$files = dir "c:\temp\from\*.txt" |? {!((gc $_) -match '\{2:I(103|202|200)')} |
Большое спасибо за помощь, скрипт работает. (не успел отписать сразу)
Последний вопрос, подскажите пожалуйста как настроить логирование в .txt файл, что бы в нем записывалась дата создания файла и его наименование? (прописали логирование он записывает дату переноса файла) |
Удобнее всего в .csv, его можно сразу в Экселе открывать.
Код:
$files |select name,creationtime |Export-Csv d:\temp\from\log.csv -delimiter ';' -NoTypeInformation -Append |
Большое Спасибо!!
|
Время: 11:50. |
Время: 11:50.
© OSzone.net 2001-