Как сравнить со строкой в ​​цикле PowerShell foreach для файлов - PullRequest
0 голосов
/ 08 октября 2018

Как сравнить текущий месяц с файлом, измененным в текущем месяце, используя скрипт Power Shell.Мой код рабочий файл, но он читает все CSV-файл в данном каталоге.Я просто хотел прочитать файл текущего месяца, то есть измененный в октябре 2018 года.

Пожалуйста, помогите мне, у меня есть 6 файлов в моем каталоге.3 файла, дата которых была изменена в октябре 2018 года, а остальные 3 файла изменены в сентябре 2018 года. Я хочу, чтобы мой сценарий проверил текущий месяц, а затем прочитал все csv текущего месяца, т. Е. Октябрь 2018

Код:

$files = Get-ChildItem 'C:\Users\212515181\Desktop\Logsheet\*.csv'
$targetPath = 'C:\Users\212515181\Desktop\Logsheet'
$result = "$targetPath\Final.csv"
$curr_month = (Get-Date).Month
$curr_year = (Get-Date).Year

# Adding header to output file 
[System.IO.File]::WriteAllLines($result,[System.IO.File]::ReadAllLines($files[1])[1])


foreach ($file in $files)    
{
    $month = $file.LastWriteTime.ToString()
    $curr_month=(Get-Date).Month

    if ($month= $curr_month)
    {
        $firstLine = [System.IO.File]::ReadAllLines($file) | Select-Object -first 1 
        [System.IO.File]::AppendAllText($result, ($firstLine | Out-String))
        $lines = [System.IO.File]::ReadAllLines($file)
        [System.IO.File]::AppendAllText($result, ($lines[2..$lines.Length] | Out-String))
    }
}

# Change output file name to reflect month and year in MMYYYY format

Rename-Item $result "Final_$curr_month$curr_year.csv"

1 Ответ

0 голосов
/ 08 октября 2018

Ваше сравнение неверно.И вернет $ true, в результате чего все файлы будут прочитаны
Это должно быть

 if ($month -eq $curr_month)

Также я бы удалил второе

$curr_month = (get-date).month

, которое добавляет накладные расходы в ваш скрипт, как вы установилиэто до цикла

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