繁体   English   中英

从文件夹名称重命名文件的批处理脚本; “-”的问题

[英]Batch Script to rename files from folder name; issue with “-”

多年来一直使用这个脚本,我从这里找到从父文件夹名重命名电影文件名:

@echo off
for /r /d %%x in (*) do (
 pushd "%%x"
 echo %%x
 for /F %%i in ("%%x") do (
  ren *.mkv "%%~ni.mkv" 2> NUL
  ren *.avi "%%~ni.avi" 2> NUL
  ren *.mp4 "%%~ni.mp4" 2> NUL
 )
 popd
)

所以我遇到的唯一问题是父文件夹如下所示:MovieFolder-xyz

运行脚本,文件名将是:MovieFolder.mp4

这里的问题是“-xyz”被省略了,我太简单了,无法弄清楚如何修复这个脚本,这样我就不必手动重命名所有文件。 蒂亚!

我不确定您为什么要这样做,但是对于相同的任务,您可以这样做:

@for /r /d %%x in (*) do @(ren "%%x\*.mkv" "%%~nxx.mkv" 2> NUL
    ren "%%x\*.avi" "%%~nxx.avi" 2> NUL
    ren "%%x\*.mp4" "%%~nxx.mp4" 2> NUL)

或者更简单:

@for /r /d %%x in (*) do @for %%y in (mkv avi mp4) do @ren "%%x\*.%%y" "%%~nxx.%%y" 2> NUL

一个合适的脚本会首先确定目录中是否存在多个这些文件类型,以防止随机重命名其中一个,或执行一些额外的脚本以确保仅重命名特定的一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM