Powershell:将昨天的日期放在文件名中
Powershell: put yesterday's date in a filename
我正在尝试使用 powershell 脚本执行以下三个步骤:
删除所有以模式“*flv.part”结尾的文件的文件扩展名 (.part)。因此以“.flv.part”结尾的文件现在将以“.flv”结尾。
在这些 FLV 文件的文件名开头添加昨天的日期(以 YYYYMMDD 格式)。
将这些 flv 文件移动到其他目录。
我想出了第一步和最后一步。但我无法弄清楚中间步骤(第二步,我将昨天的日期添加到文件名的开头)。
这是我的发现:
cd C:\Users\appa\Desktop
Dir | Rename-Item -NewName { $_.name -replace ".part","" }
---------this step needs to add yesterday's date (in YYYYMMDD format) to filename--------
move-item -path .\*.flv -destination d:\D:\VideoCaptures
有什么想法吗?我正在使用 windows 7 和 powershell v2。
编辑:感谢大家的贡献!我为此任务制作了以下脚本:
cd C:\Users\appa\Desktop
$dt_str = (get-date).AddDays(-1).tostring("yyyyMMdd")
Dir *.part | Rename-Item -NewName { $dt_str + "-" + $_.name -replace ".part","" }
move-item -path .\*.flv -destination D:\VideoCapture
编辑:这纯粹是为了仅供参考...我已经对有帮助的 post 投了赞成票,并将 post 标记为答案,但 SU 表示不会在我达到 10 或其他声誉之前,不要反映我的投票。所以请等到那个时候我的票数变成"visible"! :)
试试这个:
$date = Get-Date
$date = $date.AddDays(-1)
$dateStr = $date.ToString("yyyyMMdd")
Dir | Rename-Item -NewName { $dateStr + $_.name -replace ".flv.part",".flv"}
请阅读 Get-Date method and Formatting Dates。
例如当前日期:
$dt = Get-Date -format 'yyyyMMdd'
或昨天
$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
您可以使用的其他功能:
- Get-Item cmdlet,例如:
Get-Item -Path "C:\Windows\*.flv.part"
- Path Class,例如:
[System.IO.Path]::ChangeExtension(".flv.part", ".flv")
- Move-Item cmdlet,
也许是这样的:
$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
Get-Item -Path "C:\Windows\*.flv.part" | Foreach-Object -Process {
$newpath = Join-Path -Path $_.DirectoryName -ChildPath "$dt-$($_.BaseName).flv" # in PowerShell "" it's a Magic String
Move-Item -Path $newpath -Destination "??"
}
请注意 PowerShell 中的 PowerShell’s Type Conversion Magic ;)
我正在尝试使用 powershell 脚本执行以下三个步骤:
删除所有以模式“*flv.part”结尾的文件的文件扩展名 (.part)。因此以“.flv.part”结尾的文件现在将以“.flv”结尾。
在这些 FLV 文件的文件名开头添加昨天的日期(以 YYYYMMDD 格式)。
将这些 flv 文件移动到其他目录。
我想出了第一步和最后一步。但我无法弄清楚中间步骤(第二步,我将昨天的日期添加到文件名的开头)。
这是我的发现:
cd C:\Users\appa\Desktop
Dir | Rename-Item -NewName { $_.name -replace ".part","" }
---------this step needs to add yesterday's date (in YYYYMMDD format) to filename--------
move-item -path .\*.flv -destination d:\D:\VideoCaptures
有什么想法吗?我正在使用 windows 7 和 powershell v2。
编辑:感谢大家的贡献!我为此任务制作了以下脚本:
cd C:\Users\appa\Desktop
$dt_str = (get-date).AddDays(-1).tostring("yyyyMMdd")
Dir *.part | Rename-Item -NewName { $dt_str + "-" + $_.name -replace ".part","" }
move-item -path .\*.flv -destination D:\VideoCapture
编辑:这纯粹是为了仅供参考...我已经对有帮助的 post 投了赞成票,并将 post 标记为答案,但 SU 表示不会在我达到 10 或其他声誉之前,不要反映我的投票。所以请等到那个时候我的票数变成"visible"! :)
试试这个:
$date = Get-Date
$date = $date.AddDays(-1)
$dateStr = $date.ToString("yyyyMMdd")
Dir | Rename-Item -NewName { $dateStr + $_.name -replace ".flv.part",".flv"}
请阅读 Get-Date method and Formatting Dates。
例如当前日期:
$dt = Get-Date -format 'yyyyMMdd'
或昨天
$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
您可以使用的其他功能:
- Get-Item cmdlet,例如:
Get-Item -Path "C:\Windows\*.flv.part"
- Path Class,例如:
[System.IO.Path]::ChangeExtension(".flv.part", ".flv")
- Move-Item cmdlet,
也许是这样的:
$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
Get-Item -Path "C:\Windows\*.flv.part" | Foreach-Object -Process {
$newpath = Join-Path -Path $_.DirectoryName -ChildPath "$dt-$($_.BaseName).flv" # in PowerShell "" it's a Magic String
Move-Item -Path $newpath -Destination "??"
}
请注意 PowerShell 中的 PowerShell’s Type Conversion Magic ;)