¿Cómo especificar la ruta del directorio en el archivo .bat?

¿Cómo especificar la ruta del directorio en el archivo .bat?

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

información relacionada