
Actualmente uso un script para cambiar el nombre de las carpetas de música, por ejemplo. Taylor Swift - 1989
a una nueva carpeta Taylor Swift
con una subcarpeta 1989
donde todos los archivos se movieron a ella.
También agregué una línea de cambio de nombre para cambiar el .jpg
nombre del archivo que se va a cambiar Folder
, lo cual funciona de maravilla.
Me gustaría saber si es posible cambiar el tamaño/escalar ese .jpg
archivo a un tamaño más pequeño de 350x350 en lugar de hacerlo a través del antiguo programa de imágenes de Microsoft Office 2010.
Por último, no sé cómo eliminar archivos no deseados, como .log
, .txt
,.info
Si pudiera obtener todo esto en el mismo script por lotes, sería increíble.
Esto es lo que uso actualmente:
@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
Respuesta1
Para mí esto funciona, espero que sea como pretendías. Llené el código por lotes con comentarios para explicar qué hace cada comando (o la mayoría de ellos). Pruebe esto sólo en una copia para ver si funciona como se esperaba. Debes tener instalado Image Magick para que funcione la opción de cambio de tamaño y cambio de nombre a Carpeta.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