命令提示符替换文件名中间的字符串
Command Prompt Replace a String in the Middle of Filenames
我有一个包含数百个文件的文件夹,格式如下:
20210322 - Filename description.txt
20210321 - Filename description.txt
20210320 - Filename description.txt
20210319 - Filename description.txt
20210318 - Filename description.txt
...
使用 Windows 命令提示符,如何将它们重命名为这种格式:
20210322 Filename description.txt
20210321 Filename description.txt
20210320 Filename description.txt
20210319 Filename description.txt
20210318 Filename description.txt
...
换句话说替换,将“-”替换为“”。
过去,我用过
rename "IMG_*.jpg" "////*.jpg"
删除文件名开头的“IMG_”。我试图做类似的事情,但没有成功:
rename "* - *.txt" "*/ /.txt"
使用支持的 Windows 系统上已有的语言,这很容易。 -replace
将删除 ' - '
。如果您对文件将被正确重命名感到满意,请从 Rename-Item
命令中删除 -WhatIf
。
powershell.exe -NoLogo -NoProfile -Command ^
"Get-ChildItem -Path '.' -Filter '*.txt' |" ^
"ForEach-Object {" ^
"Rename-Item -Path $_.FullName -NewName $($_.Name -replace ' - ',' ') -WhatIf" ^
"}"
从 PowerShell 控制台或作为 .ps1 脚本 运行 时更容易。
Get-ChildItem -Path '.' -Filter '*.txt' |
ForEach-Object {
Rename-Item -Path $_.FullName -NewName $($_.Name -replace ' - ',' ') -WhatIf
}
要获得“一行代码”,请将上面的第一个代码示例放入一个文件中,例如保存在 PATH 变量中提到的目录中的 Do-Rename.bat
文件中。然后使用命令如:
Do-Rename
我找到了一个更适合我的解决方案。一行,不需要批处理文件。使用 Windows 功率 Shell,输入:
Get-ChildItem -Recurse | ` Where-Object { $_.Name -match " - " } | ` Rename-Item -NewName { $_.Name -replace " - ", " " }
以上命令将替换所有文件名中的给定文本,包括子文件夹和子文件(递归)。
希望对大家有所帮助。
我有一个包含数百个文件的文件夹,格式如下:
20210322 - Filename description.txt
20210321 - Filename description.txt
20210320 - Filename description.txt
20210319 - Filename description.txt
20210318 - Filename description.txt
...
使用 Windows 命令提示符,如何将它们重命名为这种格式:
20210322 Filename description.txt
20210321 Filename description.txt
20210320 Filename description.txt
20210319 Filename description.txt
20210318 Filename description.txt
...
换句话说替换,将“-”替换为“”。
过去,我用过
rename "IMG_*.jpg" "////*.jpg"
删除文件名开头的“IMG_”。我试图做类似的事情,但没有成功:
rename "* - *.txt" "*/ /.txt"
使用支持的 Windows 系统上已有的语言,这很容易。 -replace
将删除 ' - '
。如果您对文件将被正确重命名感到满意,请从 Rename-Item
命令中删除 -WhatIf
。
powershell.exe -NoLogo -NoProfile -Command ^
"Get-ChildItem -Path '.' -Filter '*.txt' |" ^
"ForEach-Object {" ^
"Rename-Item -Path $_.FullName -NewName $($_.Name -replace ' - ',' ') -WhatIf" ^
"}"
从 PowerShell 控制台或作为 .ps1 脚本 运行 时更容易。
Get-ChildItem -Path '.' -Filter '*.txt' |
ForEach-Object {
Rename-Item -Path $_.FullName -NewName $($_.Name -replace ' - ',' ') -WhatIf
}
要获得“一行代码”,请将上面的第一个代码示例放入一个文件中,例如保存在 PATH 变量中提到的目录中的 Do-Rename.bat
文件中。然后使用命令如:
Do-Rename
我找到了一个更适合我的解决方案。一行,不需要批处理文件。使用 Windows 功率 Shell,输入:
Get-ChildItem -Recurse | ` Where-Object { $_.Name -match " - " } | ` Rename-Item -NewName { $_.Name -replace " - ", " " }
以上命令将替换所有文件名中的给定文本,包括子文件夹和子文件(递归)。
希望对大家有所帮助。