Вы можете получить текущую строку даты с помощью 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)