tagspace tag files and windows batch-file cmd

windows - files - tag folders



Obtener nombre de archivo en lote para bucle (4)

Tengo el siguiente bucle For en un archivo por lotes:

for /R c:/test/src %%i IN (*.*) DO ( MOVE %%i C:/test/destination ECHO %%i exit )

El resultado de ECHO muestra la ruta de archivo completa Ex: C: / Nombre de carpeta / Nombre de archivo Necesito ECHO solo el nombre de archivo . ¿Hay algún comando específico que me dé el nombre de archivo? Gracias !


Cuando las extensiones de comando están habilitadas (Windows XP y más reciente, más o menos), puede usar la sintaxis% ~ nF (donde F es la variable y ~ n es la solicitud de su nombre) para obtener solo el nombre del archivo.

FOR /R C:/Directory %F in (*.*) do echo %~nF

debe repetir solo los nombres de archivo.


Llego un poco tarde pero utilicé esto:

dir /B *.* > dir_file.txt

luego puede hacer que un bucle FOR simple extraiga el nombre del archivo y los use. p.ej:

for /f "tokens=* delims= " %%a in (dir_file.txt) do ( gawk -f awk_script_file.awk %%a )

o guárdelos en Vars (! N1!!! N2! ..! Nn!) para un uso posterior. p.ej:

set /a N=0 for /f "tokens=* delims= " %%a in (dir_file.txt) do ( set /a N+=1 set v[!N!]=%%a )


Si desea permanecer tanto en el nombre de archivo (solo) como en la extensión, puede usar %~nxF :

FOR /R C:/Directory %F in (*.*) do echo %~nxF


o Just% ~ F le dará la ruta completa y el nombre completo del archivo.

Por ejemplo, si desea registrar todos los archivos * .ax en el directorio actual ....

FOR /R C:. %F in (*.ax) do regsvr32 "%~F"

Esto funciona muy bien en Win7 (64 bits) :-)