Tengo un archivo .bat al lado de la carpeta (Resultado).
La carpeta contiene archivos .jpg con diferentes nombres.
Estoy intentando escribir un archivo .bat para cambiar el nombre de todos estos archivos en esta carpeta.
Funciona, pero no del todo. Aquí está el problema:
Solo funciona en el directorio en el que se encuentran los archivos
(necesito un archivo .bat y una carpeta con archivos al lado. Para que esto funcione).
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
Respuesta1
Aquí está la solución..
Puedes ir a la carpeta escribiendo la ruta.cd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
Establecer habilitación localExpansión retrasadaExpansión de variables mediante signos (!)
CD/D Resultadoir a la carpeta de resultados
establecer "recuento = 1000"variable en la que marqué el número de cerosarchivo-001.jpg
establecer a = "*. jpg"la variable indica qué archivos estamos buscando.
( dir /b /o:-d /tc %a%
)
directorio- Muestra una lista de archivos y subdirectorios. A continuación, ordenamos.
/b- Mostrar solo nombres de archivos.
/sobredosis- Ordena la lista de archivos mostrados en orden inverso (del más nuevo al más antiguo).
/tc- Ordenar por hora de creación del archivo.
%a%- Llamar a la variable.
usobackqEstablece la capacidad de utilizar comillas para nombres de archivos.Así> ".
Especifica la ejecución de una cadena, entre comillas invertidas, como comandosAsí> `y
las cadenas entre comillas simples son como comandos en una cadena de caracteresAsí> '.
delimis = xxxEspecifica un conjunto de delimitadores. Anula el conjunto de delimitadores de tabulación y espacio predeterminados.
Respuesta2
No me queda muy clara tu pregunta (mi inglés es flojo y pobre), no entiendo cuál sería:
Solo funciona en el directorio en el que se encuentran los archivos
(necesito un archivo .bat y una carpeta con archivos al lado. Para que esto funcione).
- Supongo que quieres cambiar el nombre de forma recursiva, aquí tienes una edición para eso.
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.Ingresa a la carpeta donde está el murciélago:
cd /d "%~dp0Result"
2.Enumere sus archivos de forma recursivadir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.Incrementa tu contador
set /a "_cnt+=1"
4.Cambie el nombre de su archivo en un bucle usando su contador
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
Obs.Si estoy alejado de lo que buscas, por favor házmelo saber...
- Una alternativa basada en tu respuesta.
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF
Algunas lecturas adicionales:
[√]cmd
[√]En bucle
[√]CMD/Operador de murciélagos /dostips.com
[√]Ejecución condicional || &&...
[√]¿Qué significa %~dp0 y cómo funciona?
[√]¿Cómo analiza los scripts el intérprete de comandos de Windows cmd.exe?
[√]Cómo hacerlo: Caracteres de escape, delimitadores y comillas en la línea de comando de Windows