Попытка передать содержимое имен файлов в папке для запуска исполняемого файла - PullRequest
1 голос
/ 02 марта 2020

У меня есть папка с набором файлов с именами, такими как 07777123456-02071234567.dat

Мне нужно запустить исполняемый файл для каждого файла в папке следующим образом: myexecutable.exe -orignum=07777123456 -destnum=02071234567 -file=07777123456-02071234567.dat

Мои последние попытка выглядит следующим образом:

$fileDirectory = "c:\PS";
foreach($file in Get-ChildItem $fileDirectory)
{
    Write-Output "Processing: $file"
    $phonenumbers = $file.split("-")
    Write-Output "Originating Number: $phonenumbers[0]"
    Write-Output "Destination Number: $phonenumbers[1]" 
}
#myexecutable.exe -orignum=$phonenumber[0] -destnum=$phonenumber[1] -file=07777123456-02071234567.dat

Я пробовал различные комбинации Get-ChildItem, File-Split et c. Я получаю сообщение об ошибке вроде:

Ошибка вызова метода, поскольку [System.IO.FileInfo] не содержит метод с именем 'split'.

Любые предложения по исправлению это?

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Хорошо, я понял это. Должно быть, наконец, проснулся.

foreach($file in Get-ChildItem *.wav -name)
{
    Write-Output "Processing: $file"
    $FileNameWithoutExtension = (Get-Item $file).Basename
    $NumbersArray = $FileNameWithoutExtension.split("-")
    $FirstNumber = $NumbersArray[0]
    $SecondNumber = $NumbersArray[1]
    Write-Output "Originating Number: $FirstNumber"
    Write-Output "Destination Number: $SecondNumber"
}
0 голосов
/ 02 марта 2020

Ваш ответ работает, но может быть сокращен до

Get-ChildItem -Filter '*.wav' -File | ForEach-Object {
    Write-Output "Processing: $($_.FullName)"
    $FirstNumber, $SecondNumber = $_.BaseName -split '-'
    Write-Output "Originating Number: $FirstNumber"
    Write-Output "Destination Number: $SecondNumber"

    # myexecutable.exe -orignum=$FirstNumber -destnum=$SecondNumber -file=$($_.FullName)
}
...