
我目前使用腳本來重命名音樂資料夾,例如。Taylor Swift - 1989
到一個Taylor Swift
帶有子資料夾的新資料夾1989
,所有檔案都移入其中。
我還添加了一個重命名行來更改.jpg
要重命名的文件Folder
,這很有效。
我想知道是否可以將該.jpg
檔案調整大小/縮放到 350x350 的較小尺寸,而不是透過舊的 Microsoft Office 2010 圖片程式來執行此操作。
最後,我不知道如何刪除不需要的文件,這些是.log
,,.txt
.info
如果我能在同一個批次腳本中獲得這一切,那就太棒了。
這是我目前使用的:
@echo off & cd /d "%~dp0"
for /f delims^= %%i in =;(' dir /a:-a /b "* - *"
');= do for /f usebackq^tokens^=1*delims^=-^" %%G in =;(`
set /p "'=%%~nxi"^<nul `);= do call %:^) "%%~G" "%%~H" "%%~dpnxi"
for /r /d %%i in (*)do if exist "%%~fi\*.jpg" for /f tokens^=* %%I in (
'%__APPDIR__%where.exe "%%~i:*.jpg"')do ren "%%~fI" "Folder.jpg"
%:^)
if not "%~1" == "" =;(
set "_dir=%~1" & set "_sub=%~2"
call rename "%~3" "%%_sub:~1%%"
call mkdir "%cd%\%%_dir:~0,-1%%"
call move "%%_sub:~1%%" "%%_dir:~0,-1%%"
);= & exit /b
答案1
對我來說這有效,我希望它如你所願。我在批次程式碼中填充了註釋,以解釋每個命令(或大多數命令)的作用。僅在副本上進行測試,看看它是否按預期工作。您必須安裝 Image magick 才能調整大小並重新命名為 Folder.jpg 選項。
@echo off
:: set here the rootfolder where the music folders are:
set RootFolder=%userprofile%\desktop\music
for /f "delims=" %%a in ('dir /ad /b "%RootFolder%\*-*"') do for /f "tokens=1* delims=-" %%b in ("%%~a") do (
set "OriginalName=%%~a"
set "FolderPart1=%%~b"
set "FolderPart2=%%~c"
call :Edit "%%~b" "%%~c"
)
echo This is the end....
exit
:Edit
:: checks and removes if there are white spaces in front and back of new folder names:
if "%FolderPart1:~-1%"==" " (set "FolderPart1=%FolderPart1:~0,-1%" & goto :Edit)
if "%FolderPart2:~0,1%"==" " (set "FolderPart2=%FolderPart2:~1%" & goto :Edit)
:: deletes log txt and info files:
del /q "%RootFolder%\%OriginalName%\*.log"
del /q "%RootFolder%\%OriginalName%\*.txt"
del /q "%RootFolder%\%OriginalName%\*.info"
:: uses image magick to create a resized copy named Folder.jpg of a jpg file inside the original folder:
magick "%RootFolder%\%OriginalName%\*.jpg" -resize 350x350 "%RootFolder%\%OriginalName%\Folder.jpg"
:: deletes all jpg files except Folder.jpg inside the original folder:
for /f "delims=" %%a in ('dir /b "%RootFolder%\%OriginalName%\*.jpg" ^|find /i /v "Folder.jpg"') do del /q "%RootFolder%\%OriginalName%\%%~a"
:: Creates a new folder from the part before the hifen "-" in the original folder:
if not exist "%RootFolder%\%FolderPart1%" md "%RootFolder%\%FolderPart1%"
:: moves and renames the original folder to the second part or the original foldername (behind the hifen):
move "%RootFolder%\%OriginalName%" "%RootFolder%\%FolderPart1%\%FolderPart2%"
goto :EOF