несколько исключающих правил в powershell - PullRequest
0 голосов
/ 27 июня 2018

У меня есть требование исключить файлы на основе года, названия страны и даты последнего изменения из этого конкретного года, а остальные файлы из этого конкретного года и страны, перемещенной в папку архива

для примера

  • SS_MM_Master_finland_2018.xlsx дата последнего изменения 27/06/2018 19: 00.
  • SS_MM_Master_finland_2017.xlsx дата последнего изменения 27/06/2017 19: 00.

в этом случае одна и та же страна и год отличаются в имени файла, поэтому исключается дата последнего изменения последнего года, поэтому оба файла будут исключены

хочет знать, может ли кто-нибудь привести небольшой пример, основанный на его опыте ... необязательно, чтобы он был из приведенного выше примера, или какое-либо правило множественного исключения, или что-нибудь ценное приветствуется

Забавно, что у меня есть только одно заявление об исключении файлов, и я не знаю правила исключения нескольких файлов, основанного на имени файла. Любой пример имеет значение

У меня есть только одно исключение из файла

$sourcedir = 'C:\Test\Country'
$destdir = 'C:\Test\Country\Archive'

Get-ChildItem -File -Path $sourcedir |
    Sort-Object -Property LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Move-Item -Destination $destdir -force

спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Я публикую это как ответ, так как у меня нет персонажей, чтобы сделать это как комментарий. Дай посмотреть, пойму ли я это.

$Files = Get-ChildItem -File C:\Setup | select Name, LastWriteTime

Затем вы можете экспортировать файлы вроде:

Name                           LastWriteTime       
----                           -------------       
SS_MM_Master_Finland_2017.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Finland_2018.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Germany_2017.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Germany_2018y.txt 6/27/2018 4:30:09 PM
SS_MM_Master_Italy_2017.txt    6/27/2018 4:30:09 PM
SS_MM_Master_Italy_2018.txt    6/27/2018 4:30:09 PM

И тогда вы можете использовать foreach, если:

foreach ($File in $Files) {

If ($File.Name -like "*Italy*" -and $File.Name -like "*2017*") {
Write-Host $File.Name
}
Else{
Write-Host "This is not the file you are looking for" $file.Name
}
}

Полагаю, вы можете понять концепцию этого кода. Вы можете заменить Italy на переменную, которую вы можете сделать с Read-Host, которая отвечает всем вашим условиям в операторе if, а затем, если они верны, переместить файл в другую папку.

Надеюсь, этот ответ поможет вам.

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