Добавить к массиву подстановочных знаков в Powershell - PullRequest
0 голосов
/ 26 апреля 2018

Я новичок в powershell и ищу что-то проверить для POC. В папке «Входящие» облака хранятся несколько файлов (File_1.txt, File_2.txt и т. Д.).

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

Я не могу указать -Path в коде, поскольку файлы находятся в облаке, и у меня нет пути.

Код ниже работает:

 $files = @("File_1.txt","File_2.txt","File_3.txt")
 foreach ($file in $files) {
   Run commands on cloud like...delete inbox/$file
 }

Однако я не могу жестко закодировать имена файлов. Я ищу, чтобы добавить имена файлов с использованием подстановочного знака.

  $files=@("File*.txt")
   foreach ($file in $files) {
     Run commands on cloud like...inbox/$file
   }

Но это не работает, так как в журнале он принимает File * .txt в качестве имени файла.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы должны использовать dir эквивалент PowerShell, Get-ChildItem (на самом деле dir и ls являются псевдонимами для командлета) для поиска файлов с использованием подстановочных знаков:

$files = Get-ChildItem file*.txt
foreach($file in $files) {
    DoSomeStuffWithFile $file
}

Get-ChildItem возвращает FileInfo объектов. Если вы хотите использовать имя файла String в цикле, вам следует обратиться к свойству Name объекта:

DoSomeStuffWithFileName $file.Name
0 голосов
/ 26 апреля 2018

Вы можете легко обновить номер файла, используя строка интерполяции . Вот базовый пример того, как это может работать:

1 .. 10 | 
    ForEach-Object {
        "hello" | Out-File -Path "File_$_.txt"
    }

Здесь мы генерируем массив чисел от 1 до 10 (используя оператор диапазона ..), затем это передается нашей команде (и, следовательно, помещается в переменную $_). По мере прохождения каждого числа путь составляется с текущим значением $_, поэтому вы получаете File_1.txt, File_2.txt и т. Д.

Вы можете использовать другие методы зацикливания, но главное в том, что вы можете создавать имя файла / путь на лету, заменяя переменные в PowerShell.

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