在文件夹内创建文本文件,然后重命名文件夹以匹配其中的文件名

在文件夹内创建文本文件,然后重命名文件夹以匹配其中的文件名

我有一个名为“电影”其中有几个子文件夹,每个子文件夹都有电影标题+描述作为名称,假设:“蓝丝绒(1986)-标准收藏”

每个电影子文件夹中都有许多文件,通常是视频文件(扩展名为 .mkv、.mp4、.avi、.wmv 等)、字幕文件(扩展名为 .srt),有时还有 .jpg 图像。这些文件以电影标题作为名称,不同的比他们所在文件夹的名称例如“蓝丝绒 - 大卫林奇(1986)”

我想要实现的目标是:

1在每个电影子文件夹内创建一个文本文件。文本文件的名称应与相关子文件夹的名称完全相同。

然后(我不介意顺序,但我不确定这些步骤是否可以按相反的方向执行)

2. 重命名电影子文件夹,采用与视频相同的名称(当然不带扩展名)。

或者换句话说,因为据我所知,当涉及 cmd 和 bat 文件时,没有重命名文件夹之类的操作,而是在文件夹之间移动文件,所以我想创建一个以电影子文件夹命名的文本文件,然后将它移动到以视频文件名命名的新文件夹中,以及初始文件夹中的所有其他文件。

所以

Movies/Blue Velvet (1986) - The Criterion Collection/
Blue Velvet - David Lynch (1986).mkv
Blue Velvet - David Lynch (1986).srt
Blue Velvet - David Lynch (1986).jpg

变成

Movies/Blue Velvet - David Lynch (1986)/
Blue Velvet - David Lynch (1986).mkv
Blue Velvet - David Lynch (1986).srt
Blue Velvet - David Lynch (1986).jpg
Blue Velvet (1986) - The Criterion Collection.txt

理想情况下,我希望通过选择文件夹并启动 bat 文件来启动该过程。通过上下文菜单操作或“发送到”bat 文件,我知道如何执行这两种操作,我只是想获得有关 bat 文件中命令的帮助。这样,使用前面的示例,我可以只处理“蓝色天鹅绒”以及其他选定的电影子文件夹,不一定是 “电影”根文件夹,以防有些文件夹不需要排序,但如果无法排序,也没问题。不过,文件夹和文件名中可以​​包含特殊字符/符号、数字和空格。我搜索了一番,找不到适合我的情况的答案,我想最棘手的部分是子文件夹“重命名”,以及只对选定的电影子文件夹而不是“电影”根文件夹中的每个子文件夹执行操作的方法。

如能得到任何帮助我将非常感激,非常感谢!

答案1

嗯,我猜应该是这样的:

@echo off
Title Movie Folder Renamer
:Start
Rem Put the path to the movie folders here:
set MovieFolders=%CD%
cls
echo.
set /p Pattern=Please inform the pattern: 
if /i "%Pattern%"=="*.*" set "Pattern=|Find /i ".""
pushd %MovieFolders%
echo.
Echo List of affected Folders:
echo.
dir /ad /b /p %Pattern%
echo.
echo What would you like to do? (C)ontinue ^| C(a)ncel ^| (N)ew Pattern
Choice /c "CAN"

if "%errorlevel%"=="2" Goto Exit
if "%errorlevel%"=="3" Goto Start
for /f "Delims=" %%a in ('dir /ad /b ^%Pattern%') do (
echo.> "%%a\%%~nxa.txt"
pushd "%%a"
for %%b in (*.mp4 *.mkv *.avi *.wmv *.asf *.mpg *.mpeg *.fla) do (
popd
ren "%%a" "%%~nb"
)   
)
if exist "%~pd0\NoSrt.txt" del "%~pd0\NoSrt.txt"
for /d %%c in (%MovieFolders%\*) do if not exist "%%c\*.srt" echo %%~nc >> %~dp0NoSrt.txt
:Exit

前:

在此处输入图片描述

后:

在此处输入图片描述

相关内容