![使用之前的日期重命名文件](https://linux22.com/image/1423567/%E4%BD%BF%E7%94%A8%E4%B9%8B%E5%89%8D%E7%9A%84%E6%97%A5%E6%9C%9F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我正在运行一个程序,该程序在每月 1 号为不同的客户创建 50 份 pdf 格式的报告。我需要文件名反映上个月和当前年份,即 2014_09_ASI.pdf。我目前正在使用批处理文件重命名报告,并在创建报告后加上日期。但我只能让批处理文件使用当前月份,而不能返回上一个月的名称。有什么想法我是否可以使用 PowerShell 执行此操作?
答案1
在晚上 11:59 运行报告和脚本。这将允许您使用当前年份和月份重命名文件(假设整个过程可以在这一分钟结束之前运行)。
以下是一些其他解决方案如何以 PowerShell 或 Batch 形式执行您想要的操作。
答案2
PowerShell 的 Get-Date cmdlet 允许对字符串进行数学和类型转换,您可以轻松地利用它来发挥自己的优势。
获取上个月的数据:
(get-date).month - 1
获取一个月前的字符串:
[string]((get-date).month - 1) + "_" + (get-date).Day
因此文件命名格式为:Year_LastMonth#_ASI.pdf:
$LastMonth = (Get-Date).Month - 1
$year = (get-date).year
$newFileName = "$lastMonth $year ASI.pdf" -replace ' ', '_'
您也可以使用变量扩展来完成相同的操作,或者如果您真的愿意,甚至可以将其作为单行代码,但根据 PS 版本的不同,我发现变量扩展有点不可预测......所以我使用空格来确保准确扩展,然后将新变量中的“ ”替换为“_”。