Board logo

标题: [文件操作] 批处理怎样修改文件夹和子文件夹所有mp4的文件名? [打印本页]

作者: gddsssko    时间: 2024-6-27 12:28     标题: 批处理怎样修改文件夹和子文件夹所有mp4的文件名?

将文件夹和子文件夹下的所有mp4文件名中"."后边所有内容删除。注意不要把扩展名删除。
比如:
Test/001/abc你好001.mp4你好.mp4
执行后
Test/001/abc你好001.mp4

数量比较多,大概一万个,在不同文件夹
作者: qixiaobin0715    时间: 2024-6-27 12:57

本帖最后由 qixiaobin0715 于 2024-6-27 12:59 编辑

批处理文件保存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /s /b /a-d "*.mp4*.mp4"') do (
  4.     set "na=%%~nxi"
  5.     set "na=!na:.mp4=.!"
  6.     for %%j in ("!na!") do (
  7.         ren "%%i" "%%~nj.mp4"
  8.     )
  9. )
  10. pause
复制代码

作者: 77七    时间: 2024-6-27 14:20

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.mp4') do (
  4. for /f "delims=." %%a in ("%%~ni") do (
  5. ren "%%i" "%%a%%~xi"
  6. )
  7. )
  8. pause
复制代码

作者: aloha20200628    时间: 2024-6-27 15:43

本帖最后由 aloha20200628 于 2024-6-27 16:06 编辑

回复 1# gddsssko

一旦遭遇有多点分隔的文件名如 c:\test\xyz.abc你好001.mp4你好.mp4  则可处理成 c:\test\xyz.abc你好001.mp4
  1. @echo off &for /r %%F in (*.mp4) do for %%f in ("%%~dpnF") do (ren "%%F" "%%~nf%%~xF")
  2. pause&exit/b
复制代码

作者: newswan    时间: 2024-6-27 21:59

本帖最后由 newswan 于 2024-6-27 22:06 编辑

第一个 .mp4 后面的删掉?
需要 sed
  1. for /f "usebackq tokens=1 delims=" %%a in (` dir /s /b /a-d "*.mp4*.mp4" `) do (
  2. for /f "usebackq tokens=1 delims=" %%b in (` echo %%a | sed -e 's/[.]mp4.*[.]mp4/.mp4/'`) do (
  3. ren %%a %%b
  4. )
  5. )
复制代码
powershell
  1. Get-ChildItem -Path ".\New folder\" -Filter "*.mp4*.mp4" | ForEach-Object {
  2. Rename-Item $_ -NewName ($_.Name -replace "[.]mp4.*[.]mp4",".mp4")
  3. }
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2