如何在第二个以空格分隔的文件名部分之后插入连字符来重命名文件?

时间:2018-12-02 07:37:09

标签: cmd

我无论如何都不擅长编码。我发现我将需要开始使用一些代码来使某些任务的繁琐程度降低。

我当前正在使用 Plex TV ,它是一种媒体服务器,允许您将电视连续剧和电影上传到在线服务器,然后可以将其直接通过电话应用程序发送到电视。 (太棒了!)

我正在尝试上传文件,但是它需要匹配某个路径才能正常工作。

例如:TV Shows\Greys Anatomy\Season 1\Greys Anatomy - S01E01\

我有9个季节的《灰色解剖》,但文件名缺少连字符:Grey's Anatomy S01E0

是否可以重命名多个文件并在-Anatomy之间插入S01E01

我有9个没有连字符的季节。

我已经看过诸如ren "Greys Anatomy "* "Greys Anatomy - "*之类的命令,但是它不起作用。它替换了以下S,然后将其全部拧紧。我敢肯定有一个简单的解决方案,但是我不太擅长编码,现在已经尝试了一两个小时了。

1 个答案:

答案 0 :(得分:1)

命令语法为:命令名称ren空格,文件/文件夹的参数字符串(可选),以使用双引号引起来的路径进行重命名, SPACE ,新文件/文件夹名称的参数字符串,始终用双引号引起来,而没有路径。

因此正确使用的命令行应与通配符* 内部一起用双引号括起来的第一和第二个参数字符串:

ren "Grey's Anatomy *" "Greys Anatomy - *"

但是此命令行无法按您期望的方式工作。当前文件名中最多*的字符数为15,而新文件名中最多*的字符数仅为14。因此, REN 命令使用还有下一个字符S,并使用此命令行将Grey's Anatomy S01E01重命名为Greys Anatomy - 01E01,而缺少S

我建议使用具有以下代码的批处理文件,由于您尚未发布要修改的文件的完整限定路径,因此您必须在第二行上对第二行进行调整:

@echo off
set "SourceFolder=C:\Temp\TV Shows\Greys Anatomy"
for /F "delims=" %%I in ('dir "%SourceFolder%\Grey*Anatomy*" /A-D-H /B /S 2^>nul') do (
    for /F "eol=| tokens=2*" %%A in ("%%~nxI") do ECHO ren "%%I" "Greys Anatomy - %%B"
)
set "SourceFolder="
pause

注意:第四行的命令ECHO剩下ren,仅用于输出重命名命令,而不是真正执行重命名。运行此批处理文件,并验证输出重命名命令行是否会产生您期望的效果。如果得到肯定的结果,请删除ECHO ,保存批处理文件,然后再次运行它以真正重命名文件。

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • for /?
  • pause /?
  • ren /?
  • set /?

顺便说一句:诸如共享软件文件管理器Total Commander之类的GUI应用程序使那些没有经验仅使用计算机鼠标编写代码的人也可以进行此类文件重命名操作。