Как я могу использовать PowerShell для копирования диапазона файлов, где имя файла представляет собой последовательность чисел - PullRequest
0 голосов
/ 31 мая 2018

Как я могу использовать PowerShell для копирования диапазона файлов, где имя файла представляет собой последовательность чисел?

Например, скажем, у меня есть набор файлов, имена которых представляют собой числа, начинающиеся с 23540987577 до 27495847547388. Однако я хочу копировать файлы, где средние 5 чисел находятся в диапазоне от 43565 до 43769. Я сделал несколькопопытки, но либо копирует все, либо выдает ошибки.

Пока у меня есть следующее:

    $START = read-host -prompt "Enter starting number"
$END = read-host -Prompt "Enter ending number"


$Files = Get-ChildItem
$Files = $Files.name
$i = 1
foreach ($i in $Files) {
if ($Files[$i] -ge "*$START*" -and $Files[$i] -le "*$END*") {
/
Copy-Item $Files[$i] .\pulled
$i++
}
else {
Write-Host "no"

}
}

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

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

*43565*
*43566*
*43567*
*43568*

и т. Д. *

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

1 Ответ

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

как насчет следующего:

это не регулярное выражение, но я не вижу здесь никакого преимущества в использовании регулярного выражения:

Я еще не использовал много Powershell, поэтому я придерживаюсь псевдокода,но вы должны легко адаптировать его к сценарию Powershell:

CopyFiles(int lowerBound, int upperBound)
{
    foreach (file in fileList)
    {
         int filename = (int)file.filename.substring(1,X) // you have to know the length of your substring, maybe pass it also as parameter
         if(filename >= lowerBound && filename <= upperBound)
         {
             move (file.filename, new location)
         }
    }
}
...