powershell - PowerShell 脚本使用日期和月份批量重命名文件
问题描述
有谁知道我可以如何更改以下 PowerShell 脚本以包括月份和年份:
Get-ChildItem *.mp4 | Rename-Item -newname {“SONYA7 - “ + $_.LastWriteTime.toString("yyyy-MM-dd - HH-mm-ss") + ".mp4"}
例如上面的脚本将产生:
SONY7 - 2020-05-01 - 15-50-35.mp4
但我需要它来生产:
SONY7 - 2020-05-01(2020 年 5 月).mp4
这可能是一个非常简单的修复,但我尝试了几种不同的方法,但我得到的只是错误消息。非常感谢您的帮助。
解决方案
继续我的评论
如果您想要名为 的文件SONYA7 - 2020-05-01 (May 2020).mp4
,请使用$_.LastWriteTime.toString("yyyy-MM-dd (MMM yyyy)")
.
但是,正如您所注意到的,这将导致名称冲突,在同一天修改的文件将获得相同的文件名。为了克服这个问题,您还需要保留文件时间部分。
也许格式"yyyy-MM-dd (MMM yyyy HH-mm-ss)"
会是更好的选择,尽管它确实会创建长文件名..
然后,这里也有一个问题需要考虑:
当使用类似Get-ChildItem *.mp4 | Rename-Item ...
的代码时,Get-ChildItem cmdlet 也会拾取已经重命名的文件,多次执行该操作。
要阻止它迭代已重命名的文件,要么
- 首先在变量中捕获来自 Get-ChildItem 的文件集合并循环遍历该OR
- 用括号包围 Get-ChildItem 部分,以便在通过管道发送项目之前完成
(Get-ChildItem -Filter '*.mp4' -File) |
Rename-Item -NewName { 'SONYA7 - {0:yyyy-MM-dd (MMM yyyy HH-mm-ss)}.mp4' -f $_.LastWriteTime }
推荐阅读
- excel - 两个 ListBox - 一个返回空值
- c# - C# API:如何在其他 API 中使用 access_token
- qt - 动态添加到 qml tabbar 和 stacklayout
- c# - 如何手动从机器人向 Microsoft Teams 发送“对话更新”?
- javascript - 来自用户界面的 Spring Boot AJAX POST 请求和 knockout.js 调试错误
- node.js - Node js html-pdf命令不适用于PHP
- javascript - 切换 Bootstrap 导航下拉菜单
- r - 从 Rscript 调用 mclapply
- c# - 光标位置 C# 不适用于图片框
- python - 为什么多处理的成本与正常方式相同