根据现有文件名重命名文件
Renaming files based on their existing filename
正在尝试根据现有文件名重命名几千个文件。所有文件都在不同的子文件夹中,并由程序输出,文件名格式为:
yyyy-mm-dd_filenameinfo.txt
需要重命名为:
dd-MMM-yyyy_filenameinfo.txt
例如:
2008-03-14_outputs.txt,正在更改为
3 月 14 日-2008_outputs.txt
我知道这样做会导致按日期排序丢失,但不幸的是,这是提交过程的要求。
我已经做了一些研究,但我对 cmd 行或 powershell 非常不熟悉,我无法找到已经问过这个问题的位置。
详细说明我的评论:
- gci -> Get-ChildItem using wildcards/ranges
- -f format operater 构建新名称
- .split() method 将下划线处的当前名称拆分为多个部分。
- Get-Date cmdlet 将拆分日期转换为 [datetime] 类型。
- Ren -> Rename-Item 直接从管道接受输入,-NewName {script block} 来评估每个项目的新名称
Get-ChildItem [12][09][0-9][0-9]-[01][0-9]-[0-3][0-9]_* -File -Recurse
递归 returns 文件名以 this/previous 世纪
的日期开始
|Rename-Item -Newname {'{0:dd-MMM-yyyy}_{1}' -f (Get-Date ($_.Name.Split('_')[0])),($_.Name.Split('_')[1])}
这里:
$_.Name.Split('_')
将名称拆分为两部分,附加索引 [0],[1] selcect 的第 1、2 部分。
Get-Date 将日期转换为 [datetime],后者由 -f format operator
和 dd-MMM-yyyy
OTOH 转换为所需格式
正在尝试根据现有文件名重命名几千个文件。所有文件都在不同的子文件夹中,并由程序输出,文件名格式为: yyyy-mm-dd_filenameinfo.txt
需要重命名为: dd-MMM-yyyy_filenameinfo.txt
例如: 2008-03-14_outputs.txt,正在更改为 3 月 14 日-2008_outputs.txt
我知道这样做会导致按日期排序丢失,但不幸的是,这是提交过程的要求。
我已经做了一些研究,但我对 cmd 行或 powershell 非常不熟悉,我无法找到已经问过这个问题的位置。
详细说明我的评论:
- gci -> Get-ChildItem using wildcards/ranges
- -f format operater 构建新名称
- .split() method 将下划线处的当前名称拆分为多个部分。
- Get-Date cmdlet 将拆分日期转换为 [datetime] 类型。
- Ren -> Rename-Item 直接从管道接受输入,-NewName {script block} 来评估每个项目的新名称
Get-ChildItem [12][09][0-9][0-9]-[01][0-9]-[0-3][0-9]_* -File -Recurse
递归 returns 文件名以 this/previous 世纪
的日期开始|Rename-Item -Newname {'{0:dd-MMM-yyyy}_{1}' -f (Get-Date ($_.Name.Split('_')[0])),($_.Name.Split('_')[1])}
这里:
$_.Name.Split('_')
将名称拆分为两部分,附加索引 [0],[1] selcect 的第 1、2 部分。
Get-Date 将日期转换为 [datetime],后者由 -f format operator
和 dd-MMM-yyyy