foreach (#file in $ files) {nul find "2019" $ file save (D: \ Export2019 \ $ file)} - PullRequest
0 голосов
/ 05 апреля 2019

.ps1 копировать файлы в определенные места, если конкретный текст в файле

Я пытаюсь написать код в Powershell ... У меня много файлов .xml в S: \ Export \, и я хочускопировать файлы с текстом «2019» в папку S: \ Export2019 \

Это мой код:

Start-Transcript -Path S:\Export2019\info.txt
$files = Get-ChildItem "S:\Export\"
mkdir S:\Export2019
foreach ($file in $files){
>nul find "<APPDATE>2019" $file (
  echo $file was found.
  Save("S:\Export2019\$file")
) 
}
ii S:\Export2019 #

У меня много файлов .xml в S:\ Export \, и я хочу скопировать файлы с текстом «2019» в папку S: \ Export2019 \

, это не работает:

>nul find "<APPDATE>2019" $file (
  echo $file was found.
  Save("S:\Export2019\$file")

1 Ответ

1 голос
/ 05 апреля 2019

Я не совсем уверен, правильно ли я понял ваш вопрос. Следующий скрипт перебирает все XML-файлы в определенном каталоге и ищет текст 2019. Если этот текст находится в файле, он будет скопирован в другой каталог

Пожалуйста, имейте в виду, что этот сценарий очень грубый и "грубая сила", но он должен дать вам основу для работы с

$source_dir = ".\S_Export2019" # Directory where the XML files are
$target_dir = ".\Target_Directory" # Directory where "2019" files will be copied to

# Loop through the directory $source_dir and get the fullpath of all XML-files
foreach ($file in (Get-ChildItem "$source_dir\*.xml")) {
    # Save the content of the XML file
    $file_content = Get-Content $file -raw

    # Check if the XML file contains "2019"
    if ($file_content -match "2019") {
        Write-Host "$file contains '2019'"
        Copy-Item $file $target_dir # Copy file to $target_dir
    }
}

Редактировать Спасибо @LotPings за исправление - я добавил параметр -raw в Get-Content, а также изменил сравнение if для использования -match вместо прежнего -contains

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...