我撰寫了一個批處理腳本來幫助處理 Kodi 與一個名為“媒體伴侶”的程式并行使用的影像和海報。在開發程序中出現意外情況后,我在某個特定區域遇到了問題。
我的腳本用于電視節目,這些節目分為 ROOT > Series > Seasons 1 - XX。在季節檔案夾中有一個通常稱為 folder.jpg 的檔案。我的腳本復制了它,并將其向上移動一個級別并將其重命名為 Seasonxx-thumb 和海報,以便 Kodi 使用我指定的海報。
這在我使用 Media Companion 工具抓取檔案夾之前效果很好......在我在每個季節檔案夾中擁有該季節的所有 MP4 檔案......以及單個檔案夾.jpg 的媒體伴侶工具之前。我的腳本運行良好。現在我已經正確地抓取了資訊,我有所有的 MP4 檔案,現在每集都有相應的 NFO 和縮略圖檔案......這是它應該做的......但現在對我的腳本造成了嚴重破壞因為現在有超過 1 個 jpg 檔案存在....
好訊息是每個 .jpg 都以 XXXXXXXXX-thumb.jpg 結尾。所以我需要我的腳本來重命名唯一剩余的檔案,該檔案將顯示在下面的螢屏截圖中的任何隨機檔案名。隨機檔案名最有可能來自它來自 IMDB 或 themoviedb 等網站的檔案名,這些網站以前是唯一的 jpg 并重命名為 folder.jpg 自動保留所有內容,如我所料。我這樣做的原因是我有一個特定的檔案大小 (1440x960) 用于跨 plex、serviio 和 Kodi 的海報渲染......我發現它們都是不同的大小......所以這個腳本處理復制。
所以我需要做的批處理是忽略所有以 *-thumb.jpg 結尾的檔案,只將剩余的隨機檔案名相應地重命名為 folder.jpg。調整大小是我手動處理的,更多的是讓 folder.jpg 到位并讓腳本的其余部分相應地運行。
這是我用來重命名以前單獨的 .jpg 檔案的代碼片段:
echo.
if exist folder.jpg (
echo File rename not needed
) else (
ren *.jpg folder.jpg
echo ~~~~ WARNING: File renamed as folder.jpg in Season %SeasonCounter% folder. ~~~~
)
echo.
echo ~~~~~~~~~~~~~ Copy File Operation ~~~~~~~~~~~~~
echo.
echo Copying "folder.jpg & Creating Files Season Poster & Thumbnail:
echo.
echo File copy source: "folder.jpg >> "%CurrDirName%-thumb.jpg"
copy "folder.jpg" "%CurrDirName%-thumb.jpg"
以下是檔案夾結構通常的樣子:

不完全確定如何處理此問題,因為批處理腳本一次只運行一行,并且我不能使用復合 IF 陳述句(從我在搜索 Google 和此處的一些示例中看到的內容)。有人對我如何解決這個問題有任何想法嗎?
謝謝
更新 1:
在下面的 Anon Coward 的幫助下,我將他的答案折疊到我的代碼中,并額外檢查了 folder.jpg 是否存在以不執行任何操作,否則執行:
echo.
if exist folder.jpg (
echo File rename not needed
) else (
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
set "fn=%%a"
if "!fn:~-10!" neq "-thumb.jpg" (
echo Using "!fn!"
ren "!fn!" folder.jpg
goto :done_with_rename
)
)
:done_with_rename
echo ~~~~ WARNING: File renamed as folder.jpg in Season %SeasonCounter% folder. ~~~~
echo all done
)
echo.
uj5u.com熱心網友回復:
如果我理解正確,您想重命名您發現的第一個不以“-thumb.jpg”結尾的 jpg 檔案。如果是這種情況,那么您可以查看所有可能的 .jpg 檔案,并忽略以“-thumb.jpg”結尾的任何檔案,重命名剩下的任何內容:
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
set "fn=%%a"
if "!fn:~-10!" neq "-thumb.jpg" (
echo Using "!fn!"
ren "!fn!" folder.jpg
goto :done_with_rename
)
)
:done_with_rename
echo all done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363310.html
