我正在尝试创建一个批处理,其目的是使用 MediaInfo.exe (CLI) 创建一个包含文件夹中包含的视频文件的所有“mediainfo”的文本文件 (.nfo)。
批处理是从上下文菜单中执行的:右键单击包含视频文件的文件夹。
为此,该文件将被放置在“shell:sendto”中。
生成的包含所有媒体信息的 .nfo 文件必须“放置/保存或移动”到包含视频文件的文件夹中。
一个特殊之处是我需要更改最终的 .nfo 文件,以便删除“完整名称”行的所有路径部分:
Complete name : /Users/me/Downloads/Folder1/Folder2/RÉCENTS/[File] File Name - 185 (Encode Format 1080p).mkv
在此示例中:进行搜索并替换为仅留下:
Complete name : [File] File Name - 185 (Encode Format 1080p).mkv
目前,我已经成功创建了这批(链接如下)。
这个有一些错误,即:
- 未找到文件 (x2)
- 如果存在特殊字符,Powershell 会出现错误
总结一下批量搜索的过程:
1.右键单击包含文件的文件夹>发送到>单击批处理文件。
2.创建文件夹中包含的文件的所有媒体信息 txt 文件
3.通过在每个内容之间添加分隔符“----”来合并媒体信息 txt 文件。
4.使用正则表达式搜索并替换最终文件,以删除文件名之前的所有路径,然后将 (.nfo) 保存在文件夹内。
5.清理步骤 2 中的旧临时文件。
我设法创建的实际批处理文件 https://pastebin.com/Ya2Nux4u :
@echo off
:: Fullpath current folder : %cd%
:: Fullpath folder where the right click was made : %~f1
:: Name of the folder where the right click was made : for %%f in ("%~f1") do set Name=%%~nxf
for %%f in ("%~f1") do set Name=%%~nxf
:: Step 1: Creating a temporary folder
mkdir "%~f1-Temp"
:: Step 2: Creation of all nfo txt files in the temporary folder
FOR /F "tokens=*" %%G IN ('dir "%~f1" /b *.mkv') DO (
call "C:\Users\me\Desktop\MediaInfo\MediaInfo.exe" "%~f1\%%G" > "%~f1-Temp\%%~nG.txt"
)
:: Step 3: Filling in the final nfo
setlocal enabledelayedexpansion
set i=0
FOR /F "tokens=*" %%G IN ('dir "%~f1" /b *.mkv') DO (
IF !i! == 1 (
echo ------------------------------------------------------------------------------------------------------------------------------------ >> "%~f1-Temp\%Name%.txt"
echo. >> "%~f1-Temp\%Name%.txt"
echo. >> "%~f1-Temp\%Name%.txt"
)
cat "%~f1-Temp\%%~nG.txt" >> "%~f1-Temp\%Name%.txt"
set i=1
)
endlocal
:: Step 4: Removing the path
setlocal
set $source="%~f1-Temp\%Name%.txt"
set $dest="%~f1-Temp\%Name%1.txt"
set "search=%~f1\\"
for /f "delims=" %%a in ('powershell -c "(get-content '%$source%') | foreach-object {$_ -replace '(?<=Complete name\s+:\s+).+\\'} | set-content '%$dest%'"') do echo %%a
endlocal
:: Step 5: Renaming the nfo and moving to the right place
Ren "%~f1-Temp\%Name%1.txt" "%Name%.nfo"
move "%~f1-Temp\%Name%.nfo" "%~f1"
:: Step 6: Deleting temporary files
rmdir /s /q "%~f1-Temp"
pause
如果您对已编码的内容有改进或/和更正的建议,请不要犹豫!
预先感谢您的帮助!