批量删除文件名中几个特定字符的命令?

我下载了很多视频和字幕文件在一个文件夹中,格式如The Hitler Chronicles 1889-1929 (14).mp4,The Hitler Chronicles 1889-1929 (14).zh-Hans.srt;Documentaire Histoire - MP.mp4,Documentaire Histoire - MP.zh.srt,字幕名中要么多.zh-Hans,要么多.zh,而很多视频播放器要求名称一至才能加载。一个个修改太麻烦。哪位大神能帮写一个命令能批处理删除文件中的.zh-Hans和.zh,不用软件,直接点击就成的命令,修改文件扩展名为srt。本人小白一个,不胜感激,

可以尝试使用以下的命令行脚本(适用于Windows操作系统):
@echo off
setlocal enabledelayedexpansion

rem 设置文件夹路径set "folder_path=YOUR_FOLDER_PATH"rem 遍历文件夹中的所有文件for %%F in ("%folder_path%\*.mp4") do (
rem 获取文件名和扩展名 set "filename=%%~nF"
set "extension=%%~xF"

rem 删除文件名中的".zh-Hans"和".zh"
set "new_filename=!filename:.zh-Hans=!"
set "new_filename=!new_filename:.zh=!"

rem 修改扩展名为".srt"
ren "%%F" "!new_filename!.srt")echo 完成批处理命令!
pause

请将上述代码中的YOUR_FOLDER_PATH替换为包含视频和字幕文件的文件夹路径。保存为批处理文件(例如,rename_files.bat),然后双击运行该批处理文件即可。
这个命令会在指定的文件夹路径下遍历所有的".mp4"文件,删除文件名中的".zh-Hans"和".zh",并将文件扩展名修改为".srt"。运行完毕后,你将看到命令行窗口显示"完成批处理命令!"。
请注意,在运行任何批处理命令之前,务必备份重要的文件,以防意外发生。追问

朋友,我举例中是.MP4文件不需要修改,我是用它举例和.srt作对比用的,说明其中多了.zh-Hans和.zh,能否麻烦你把命令修改一下,只改扩展名为srt的文件,另外能否不指定文件路径。直接放在文件夹,修改根目录中的文件,非常感谢你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-05-18
如果你使用的是Windows,可以使用PowerShell。首先打开一个PowerShell窗口,然后转到含有文件的目录,然后运行以下命令:

1. 对于带有 `.zh-Hans.srt` 的文件,删除 `.zh-Hans`:

Get-ChildItem *zh-Hans.srt | Rename-Item -NewName { $_.Name -replace '.zh-Hans','' }

2. 对于带有 `.zh.srt` 的文件,删除 `.zh`:

Get-ChildItem *zh.srt | Rename-Item -NewName { $_.Name -replace '.zh','' }

在PowerShell命令中,`Get-ChildItem` 获取当前目录中所有符合特定模式的文件,`Rename-Item` 用于重命名文件,`-replace` 用于在文件名中删除 `.zh-Hans` 和 `.zh`。

请记住在执行这些命令之前先备份你的文件,因为一旦文件被重命名,就无法恢复到原来的状态。
第2个回答  2023-05-18
尝试以下命令来实现这个目标:
```bash
rename 's/\.zh-Hans//g' *.zh-Hans.srt
rename 's/\.zh//g' *.zh.srt
rename 's/\.р4//g' *.р4
```
请确保您在存储视频和字幕文件的文件夹中执行这些命令。这些命令将删除文件名中的`.zh-Hans`和`.zh`部分,并将文件扩展名修改为`.srt`。
请注意,这些命令可能在不同的操作系统或命令行工具中略有差异。
第3个回答  2023-05-18
您好,根据您描述的情况,我给您提供如下命令:
在命令行中进入到该文件夹并输入以下命令:
```
for file in *; do mv "$file" "${file//-/ }"; done
```
解释一下这个命令:
`for file in *` 表示遍历当前目录下的所有文件名。
`${file//-/ }` 表示将文件名中的“-”替换为一个空格。
`mv "$file" "${file//-/ }"` 表示将原文件名改为替换后的文件名。
运行完毕后,您会发现所有文件名中的“-”已经被替换成了空格,符合您的需求。如果需要删除其他特殊字符,只需将上述命令中的“-”替换为相应的字符即可。
希望对您有帮助,如有疑问,请随时留言。