我正在尝试使用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
任何想法?我正在使用带有PowerShell v2的Windows 7。
编辑:感谢大家的贡献!我为此任务制作了以下脚本: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
编辑:这纯粹是出于FYI目的......我已经对有用的帖子进行了投票,并将帖子标记为答案,但是SU说它不会反映我的投票直到我达到10或者什么名声。所以请等到那个时候让我的选票变得“可见”! :)
答案 0 :(得分:3)
试试这个:
$date = Get-Date
$date = $date.AddDays(-1)
$dateStr = $date.ToString("yyyyMMdd")
Dir | Rename-Item -NewName { $dateStr + $_.name -replace ".flv.part",".flv"}
答案 1 :(得分:1)
请阅读Get-Date方法和Formatting Dates。
例如当前日期:
$dt = Get-Date -format 'yyyyMMdd'
或昨天
$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')
您可以使用的其他功能:
Get-Item -Path "C:\Windows\*.flv.part"
[System.IO.Path]::ChangeExtension(".flv.part", ".flv")
也许是这样的:
$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;)