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) :-)