Передача параметра в каждую строку в файле - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь передать вчерашнее значение даты в качестве параметра в список имен файлов, которые я поместил в files.txt. Имена файлов поставляются с отметкой времени, и мне нужно скопировать вчерашние файлы на сетевой диск. Я передал $ odate как дату в имени файла в файле files.txt, мне нужно заменить $ odate вчерашней датой и ежедневно копировать файл с одного сетевого диска на другой.

я попытался передать параметр ($ odate) в именах файлов для каждой строки и определить, как в фрагменте кода ниже

foreach($line in Get-Content .\Desktop\files.txt){
    $odate = (get-date (get-date).AddDays(-1) -UFormat "%Y%m%d")
    echo $line}

PB724_SSNTXN_D110A01_FPRS_ $ Odate * .DAT.gz PB724_SSNTXN_D110A02_FKEN_ $ Odate * .DAT.gz

Я получаю список имен файлов, которые я поместил в файл files.txt, и $ odate не заменяется вчерашней датой.

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете сделать это так:

Get-Content -Path .\Desktop\files.txt |
    ForEach-Object {$odate = (Get-Date).AddDays(-1).ToString('yyyyMMdd')}{
        $ExecutionContext.InvokeCommand.ExpandString($_)
    }

Итак, для файла с содержанием:

PB724_SSNTXN_D110A01_FPRS_$odate.DAT.gz
PB724_SSNTXN_D110A02_FKEN_$odate.DAT.gz

Вы получите вывод:

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