Включение текущей даты в имя файла - PullRequest
1 голос
/ 04 апреля 2020

Как включить дату после базового имени файла? При выполнении приведенного ниже сценария PowerShell он загрузит файл csv в папку назначения с веб-сайта:

$client = new-object System.Net.WebClient
$client.DownloadFile("https://files.docparser.com/d/jvmnvggcccfxz","C:\test\IV_1.csv")

Имя выходного файла: IV_1.csv.

Как добавить дата в имени файла? Например имя файла, IV_1-04-04-2020.csv.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Вы можете получить текущую строку даты с помощью ToString("dd-MM-yyyy") из Get-Date, извлечь имя файла и расширение с помощью System.IO.Path.GetFileNameWithoutExtension() и System.IO.Path.GetExtension() , затем отформатируйте все части вместе с оператором -f Format .

$file = "IV_1.csv"

$dateString = (Get-Date).ToString("dd-MM-yyyy")

$filename = [System.IO.Path]::GetFileNameWithoutExtension($file)

$extension = [System.IO.Path]::GetExtension($file)

"{0}-{1}{2}" -f $filename, $dateString, $extension

Вывод:

IV_1-05-04-2020.csv

Однако, если вы имеете дело с полными путями, GetFileNameWithoutExtension не сохранит весь путь, только имя файла. Вы можете использовать System.String.Substring() и System.String.LastIndexOf(), чтобы извлечь полный путь без расширения. Это займет все до последнего . символа.

$file = "C:\test\IV_1.csv"

$dateString = (Get-Date).ToString("dd-MM-yyyy")

$path =  $file.Substring(0, $file.LastIndexOf('.'))

$extension = [System.IO.Path]::GetExtension($file)

"{0}-{1}{2}" -f $path, $dateString, $extension

Вывод:

C:\test\IV_1-05-04-2020.csv

Мы могли бы также обернуть вышеупомянутое в функцию:

function Format-FilePathWithDate {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$FilePath,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$DateFormat
    )

    $dateString = (Get-Date).ToString($DateFormat)

    $path =  $FilePath.Substring(0, $FilePath.LastIndexOf('.'))

    $extension = [System.IO.Path]::GetExtension($FilePath)

    "{0}-{1}{2}" -f $path, $dateString, $extension
}

Затем использовать эту функцию специально в вашем сценарии:

$client = new-object System.Net.WebClient

$file = Format-FilePathWithDate -FilePath "C:\test\IV_1.csv" -DateFormat "dd-MM-yyyy"

$client.DownloadFile("https://files.docparser.com/d/jvmnvggcccfxz", $file)
1 голос
/ 04 апреля 2020

Введите дату как это:

$client = new-object System.Net.WebClient
$client.DownloadFile("https://files.docparser.com/d/jvmnvggcccfxz","C:\test\IV_1-$((Get-Date).ToString('dd-MM-yyy')).csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...