当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 将日期添加到文件名 [6 种方法]

作者:精品下载站 日期:2024-12-14 05:31:00 浏览:13 分类:玩电脑

PowerShell 将日期添加到文件名 [6 种方法]


[玩转系统] 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-Item cmdlet 用于更改文件名。

使用 -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 中。
  • 然后,它使用字符串格式化运算符 -fyyyy-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.txt

Join-Path cmdlet 是在 PowerShell 中组合路径和文件名的有用方法。例如,我们可以使用它来创建一个附加日期的新文件名。例如,上面的代码按以下方式运行:

  • 将变量 $filename 的值设置为 "File1"
  • 将变量 $path 的值设置为 C:\Test1
  • 使用 Get-Date cmdlet 获取当前日期和时间并将其存储在变量 $date 中。
  • 使用 ToString() 方法将日期格式化为 yyyyMMdd 格式的字符串,并将其存储在变量 $formatDate 中。
  • 使用连字符分隔符和 .txt 文件扩展名连接 $filename$formatDate 变量,并将其存储在变量 $newFilename 中
  • 使用 Join-Path cmdlet 将 $path$newFilename 变量组合起来形成完整文件路径并将其存储在变量 $newPath
  • 最后,它使用 Write-Host cmdlet 将 $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 将日期添加到文件名的全部内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯