PowerShell 将日期添加到文件名 [6 种方法]
如果不想重命名文件而只想更改字符串格式,可以直接跳转到 join-path 部分。
使用 Rename-Item Cmdlet
使用 -Rename-Item cmdlet 在 PowerShell 中向文件添加日期
使用 -Rename-Item Cmdlet:
$Filename = "C:\Test1\File1.txt"
$newFilename = "C:\Test1\File1_$(Get-Date -Format yyyy-MM-dd).txt"
Rename-Item -Path $Filename -NewName $newFilename
Write-Host "New filename: $newFilename"输出 :
New filename: C:\Test1\File1_2023-04-25.txt
上面的代码按以下方式运行:
- 它首先将
$Filename变量设置为我们要重命名的原始文件的路径,即C:\Test1\File1.txt。 - 接下来,我们通过将 yyyy-MM-dd 格式的当前日期附加到文件名末尾来创建一个新文件名。我们使用
Get-Date命令和-Format参数来根据需要设置日期格式。生成的新文件名存储在$newFilename变量中。 - 之后,使用
Rename-Item命令将原始文件重命名为新文件名。-Path参数用于确定初始文件的路径,该路径存储在$Filename变量中,而-NewName参数用于指定新文件名,该文件名存储在$newFilename变量中 - 最后,脚本将
C:\Test1\File1.txt的名称修改为C:\Test1\File1_2023-04-19.txt,其中yyyy- MM-dd表示年月日布局中的当前日期。
将 System.IO.Path 类与 Move-Item cmdlet 结合使用
要向文件名添加日期,我们可以使用各种 System.IO.Paths 方法和 Move-Item cmdlet 来更改方法的名称。
- 使用
GetDirectoryName()获取目录的名称。 - 使用
GetFileNameWithoutExtension()获取不带扩展名的文件名。 - 使用
GetExtension()获取文件的扩展名。 - 将当前日期附加到文件名并在末尾添加扩展名。
- 使用
combine()方法来组合目录和文件名。 Move-Itemcmdlet 用于更改文件名。
使用 -replace 运算符:
[string]$filePath = "C:\Users\Arpit\Desktop\powershell\File1.txt";
[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName +"-"+[DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);
Move-Item -LiteralPath $filePath -Destination $newFilePath;
start-sleep -Seconds 30输出 :
File3-20230624-132353使用 [System.IO.Path]::ChangeExtension() 方法
使用 [System.IO.Path]::ChangeExtension() 方法在 PowerShell 中向文件添加日期。当您还想更改文件的扩展名时,此方法很有用。
使用 ChangeExtension() 方法:
$filename = "C:\Test1\File1.txt"
$newExtension = [System.IO.Path]::ChangeExtension($filename, ".txt")
$newFilename = "{0}-{1}{2}" -f [System.IO.Path]::GetFileNameWithoutExtension($newExtension), (Get-Date -Format 'yyyy-MM-dd'), [System.IO.Path]::GetExtension($newExtension)
Rename-Item $filename $newFilename
Write-Host "New filename: $newFilename"输出 :
New filename: File1-2023-04-25.txt上面的代码按以下方式运行:
- 它获取文本文件的文件路径并将其分配给变量
$filename。 - 然后,它使用 .NET 类
System.IO.Path将$filename的文件扩展名更改为.txt并将新路径分配给$newExtension变量。 - 它还使用 .NET 类
System.IO.Path从$newExtension中提取不带扩展名的文件名,并将其存储在$newFilename中。 - 然后,它使用字符串格式化运算符
-f以yyyy-MM-dd格式将当前日期和文件扩展名附加到$newFilename>。 - 最后,它使用
Write-Host cmdlet显示输出,方法是将当前日期添加到其文件名并使用新文件名重命名原始文件。
使用Join-Path Cmdlet
使用 Join-Path cmdlet 在 PowerShell 中将日期添加到文件
使用加入路径 Cmdlet:
$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "$filename-$formatDate.txt"
$newPath = Join-Path -Path $path -ChildPath $newFilename
Write-Host "$newpath"
输出 :
C:\Test1\File1-2023-04-19.txtJoin-Path cmdlet 是在 PowerShell 中组合路径和文件名的有用方法。例如,我们可以使用它来创建一个附加日期的新文件名。例如,上面的代码按以下方式运行:
- 将变量
$filename的值设置为"File1"。 - 将变量
$path的值设置为 C:\Test1。 - 使用
Get-Datecmdlet 获取当前日期和时间并将其存储在变量$date中。 - 使用
ToString()方法将日期格式化为yyyyMMdd格式的字符串,并将其存储在变量$formatDate中。 - 使用连字符分隔符和
.txt文件扩展名连接$filename和$formatDate变量,并将其存储在变量$newFilename 中。 - 使用
Join-Pathcmdlet 将$path和$newFilename变量组合起来形成完整文件路径并将其存储在变量$newPath。 - 最后,它使用
Write-Hostcmdlet 将$newPath的值输出到控制台,并按照所描述的格式附加日期。
使用 -f 格式运算符
使用 -f 格式运算符在 PowerShell 中向文件添加日期
使用 -f 格式运算符:
$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "{0}_{1}.txt" -f $filename, $formatDate
Write-Host "$newFilename"输出 :
File1_2023-04-19.txt上面的代码与前面的代码类似,但利用 -f 格式运算符将日期与文件名连接起来。
具体来说,行 $newFilename="{0}_{1}.txt" -f $filename, $formattedDate 通过使用包含占位符的格式字符串来生成文件名的新字符串 {0} 和 {1} 分别表示 $filename 和 $formattedDate 变量。
-f 运算符将占位符替换为变量的相应值。最后,输出显示完整的文件名和以 yyyy-MM-dd 格式表示的当前日期,用下划线分隔,并具有 .txt 扩展名。
使用 -replace 运算符
使用-replace运算符在PowerShell中将日期添加到文件
使用 -replace 运算符:
$filename = "File1.txt"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = $filename -replace "\.txt$", "-$formatDate.txt"
Write-Host "$newFilename"
输出 :
File1-2023-04-19.txt上面的代码与前两个代码栅栏类似,但它使用 -replace 运算符来替换 $filename 中的 .txt 文件扩展名带有连字符分隔符和 $formattedDate 中的格式化日期,并将更新的文件名存储在变量 $newFilename 中。
最后,显示最终输出,其中包含名为 File1 的文件的完整文件路径和采用 yyyy-MM-dd 格式的当前日期,并用下划线分隔并带有 .txt 文件扩展名。
考虑到上述解决方案,在 PowerShell 中向文件名添加日期是一项常见任务,可以使用 rename-item cmdlet、System.IO.Path 类和 Move-Item 来完成code> cmdlet、Join-Path cmdlet、-f 格式运算符、-replace 运算符、[System.IO.Path ]::ChangeExtension() 方法。
这就是 PowerShell 将日期添加到文件名的全部内容。
