[batch] OBTENER NOMBRE CON EXTENSION

Iniciado por rochro, 10 Marzo 2014, 22:11 PM

0 Miembros y 1 Visitante están viendo este tema.

rochro

Soy nueva en esto y quisiera ayuda en poder crear un script donde me pueda capturar el nombre del archivo (incluyendo extensión), lo almacene en una variable y así poder ejecutar una tarea en cada uno de ellos generando un bucle.

EJEM:
D:\archivos
--->X.t01
   subdirectorio
--->Y.t01
   subdirectorio
--->Z.t01

la tarea a ejecutar seria --> runpkr00 -d nombredelarchivo.t01 (se necesita ejecutar el programa en cada uno de los archivos)


Espero haberme hecho entender. Gracias de antemano.

Saludos.

--
Rossmery Chacón

Almapa

Hola Rossmery, la mejor forma de aprender es probando. Aunque pierdas un poco más de tiempo al principio, luego habrás mejorado bastante más que tan solo leyendo lo que otro puede haber programado por ti.

Te echo una mano en cuanto a las funciones que puedes gastar, dejándote así mismo una página muy recomendable para formarte http://ss64.com/nt/syntax.html

En cuanto a obtener los archivos dentro del directorio "archivos" puedes utilizar el comando "Dir":
http://ss64.com/nt/dir.html

Por lo que hace al bucle pueder utilizar el "For /f" que tomará como parámetro los resultados de otra funcion (en tu caso tomará cada archivo que será la salida del comando DIR):
http://ss64.com/nt/for_cmd.html

Espero haberte ayudado.
Un saludo!

Eleкtro

Cabe mencionar que el foro está para intentar hayar la respuesta uno mismo a dudas básicas se han solucionado 1.000 veces, usando el buscador del foro...

· Un renombrador en batch para imagenes  

· Ayuda para renombrar archivos  

· [BATCH] Cambiar extension a archivos

· batch - modificar nombres de archivos, solo sacar las letras y dejar numeros  

Saludos








sabeeee

#3
Aca esta, lo mas sencillo posible
Código (dos) [Seleccionar]
@echo off
:1
set rando=archivo%random%.t01
dir *.t01 /b >%rando%
runpkr00 -d %rando%
goto:1
"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon

rochro

Muchas gracias por el apoyo de uds. He logrado que me ejecute el programa (runpkr) en los archivos que se encuentran en la raiz de la carpeta mas no en los subdirectorios. Quisiera saber que otros comandos tendria que agregar.

Gracias de antemano =)

Código (bash) [Seleccionar]
@echo off
Setlocal enabledelayedexpansion
For %%i IN (*.t01) do (call :comando %%i)
:comando
Set file=%~nx1
runpkr00 -d %file%

Eleкtro

#5
Vaya, al principio creí que se trataba de un problema de renombramiento de archivos, leí mal, entonces no hagas caso de las urls que te indiqué, ahora te entiendo.

Lo puedes hacer así:

Código (dos) [Seleccionar]
@Echo OFF

For /R %%# IN ("*.t01") Do (
Set "file=%%~#"
Call Start /W "runpkr" "runpkr00.exe" -d "%%file%%"
)

Pause&Exit


Pero, setear el nombre del archivo en una variable es un paso innecesario, si reálmente no necesitas setear el nombre entonces reemplaza las órdenes que puse dentro del For, por este único comando:

Código (dos) [Seleccionar]
Start /W "runpkr" "runpkr00.exe" -d "%%~#"

Saludos.








sabeeee

#6
Cita de: Eleкtro en 12 Marzo 2014, 16:51 PM
Vaya, al principio creí que se trataba de un problema de renombramiento de archivos, leí mal, entonces no hagas caso de las urls que te indiqué, ahora te entiendo.

Lo puedes hacer así:

Código (dos) [Seleccionar]
@Echo OFF

For /R %%# IN ("*.t01") Do (
Set "file=%%~#"
Call Start /W "runpkr" "runpkr00.exe" -d "%%file%%"
)

Pause&Exit


Pero, setear el nombre del archivo en una variable es un paso innecesario, si reálmente no necesitas setear el nombre entonces reemplaza las órdenes que puse dentro del For, por este único comando:

Código (dos) [Seleccionar]
Start /W "runpkr" "runpkr00.exe" -d "%%~#"

Saludos.

Disculpa, pero el /W es de wait ?, a lo mejor me sirve  mi jeje.
"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon

Eleкtro

Cita de: sabeeee en 12 Marzo 2014, 17:40 PM
Disculpa, pero el /W es de wait ?.

si

Cita de: CMDWAIT        Iniciar aplicación y esperar a que finalice

saludos!








rochro

#8
Cita de: Eleкtro en 12 Marzo 2014, 16:51 PM

Código (dos) [Seleccionar]
Start /W "runpkr" "runpkr00.exe" -d "%%~#"

Saludos.

Muchas Gracias Eleкtro =) Me ayudaste muchísimo, lo que me queda como interrogante es el start /w.

Ahora tengo otro caso. Después de ejecutar el programa runpkr ahora tengo que ejecutar otro programa que es el teqc con el siguiente código:
teqc +nav nombrearchivo0.14n -week semanagps -tr d nombrearchivo.dat> nombrearchivo0.14o

nota:
* en semanagps se tendría que insertar la semana que seria ejem: 1783 (http://gps.topografia.upm.es/www/calactal.htm).
* el nombrearchivo tendria que modificar. ejem: CCCCDDDaA.t01 --> CCCCDDD0.t01 (cambiar los dos ultimos digitos por 0)

Lo que pasa es que lo estoy haciendo por partes para no aturdirme  ;D

Eleкtro

Cita de: rochro en 12 Marzo 2014, 21:32 PMnota:
* en semanagps se tendría que insertar la semana que seria ejem: 1783 (http://gps.topografia.upm.es/www/calactal.htm).

¿Pero la semana la introducs tu manuálmente?

Quiero decir, por ejemplo, que si ejecutas el script hoy (13 de marzo) quieres que se tome el día actual de forma automática para convertirlo en la semana equivalente (1783)? o el valor de la semana lo quieres especificar tu de forma manual?

saludos