
В настоящее время я использую скрипт для переименования музыкальных папок, например, 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