elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda script BATCH
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda script BATCH  (Leído 3,506 veces)
simii

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Duda script BATCH
« en: 4 Marzo 2015, 00:04 am »

Hola, buenas, soy nuevo en el foro así que saludos a todos!
Hace poco empece con BATCH y se me ocurrió hacer un script que haga lo siguiente:
Listar las carpetas de un directorio establecido en el script y enumerarlo, de forma que quede algo asi

      1- dir1
      2- dir2
      3- dir3

Asi con todas las carpetas que tenga ese directorio. Me quedó algo así
Citar
@echo off
setlocal enabledelayedexpansion
set i=1
for /R D:\carpeta /D %%a in (*) do (
   for /F "tokens=1-3 delims=\" %%b in ("%%a") do (
      echo !i!- %%d
      set /a i=i+1
   )
)
pause

El problema esta en que quiero que se me guarde la ruta en variables, explico lo que quiero conseguir.. Que el script pida el numero de la carpeta osea si pongo un 2 que se abra la carpeta que este numerada con ese numero. Habia pensado en algo así:
Código:
@echo off
setlocal enabledelayedexpansion
set i=1
for /R D:\comp /D %%a in (*) do (
for /F "tokens=1-3 delims=\" %%b in ("%%a") do (
echo !i!- %%d
SET SEL!I!=%%a  *AQUÍ ESTA EL FALLO %%a NO FUNCIONA*
ECHO !SEL4!
set /a i=i+1
)
)
pause


Como podría hacerlo?
Tendría solución?


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Duda script BATCH
« Respuesta #1 en: 4 Marzo 2015, 06:04 am »

Como podría hacerlo?

Utilizando los modificadores de las variables de For.

Ejemplo:
Código:
@Echo OFF & SetLocal EnableDelayedExpansion

For /D /R "C:\Directorio" %%# in ("*") Do (

Set /A "count+=1"
Set "dirName!count!=%%~n#"
Set "dirPath!count!=%%#"

Call Echo [dirName!count!] %%dirName!count!%%
Call Echo [dirPath!count!] %%dirPath!count!%%
Echo+

)

Pause&Exit /B 0

Output:
Código:
[dirName1] Carpeta 1
[dirPath1] C:\Directorio\Carpeta 1

[dirName2] Carpeta 2
[dirPath2] C:\Directorio\Carpeta 2

[dirName3] Carpeta 3
[dirPath3] C:\Directorio\Carpeta 3

Presione una tecla para continuar . . .

Saludos


En línea



simii

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Duda script BATCH
« Respuesta #2 en: 4 Marzo 2015, 16:06 pm »

Te agradezco la respuesta, me ha ayudado mucho!
Tengo unas dudas:
Que significa %%~n#
Como funciona el CALL antes de un echo
Y como podría hacer que los subdirectorios no aparezcan, porque al haber una carpeta dentro la lista también.
Gracias!
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Duda script BATCH
« Respuesta #3 en: 8 Marzo 2015, 05:17 am »

Busca un poco, tienes la documentación de cada comando en la propia consola de windows...



Que significa %%~n#

Es un modificador especial de variable FOR.

Código:
For /?
Cita de: For /?
Ejecuta el comando para cada uno de los archivos especificados en el
conjunto de archivos.

%~nI        - expande %I solo a un nombre de archivo



Como funciona el CALL antes de un echo

Funciona de la misma manera que sin el Call, pero expandiendo las variables.

Call (command)
Run an internal command, first expanding any variables in the argument.



como podría hacer que los subdirectorios no aparezcan, porque al haber una carpeta dentro la lista también.

No entiendo la pregunta, intenta ser más específico.
Si te refieres a que en el script de arriba quieres que no "aparezcan" los subdirectorios solo tienes que eliminar el segundo Echo.

Saludos!
En línea



LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: Duda script BATCH
« Respuesta #4 en: 9 Marzo 2015, 00:09 am »

Hola tengo una duda que quizás ya este mas quemad...

Como imprimo números del 1 al 100 con un bucle for...
En línea

LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: Duda script BATCH
« Respuesta #5 en: 9 Marzo 2015, 04:15 am »

Hola tengo una duda que quizás ya este mas quemad...

Como imprimo números del 1 al 100 con un bucle for...
@ECHO OFF
FOR /L %%i IN 1,1,101) DO (
echo %%i

)
pause
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa batch o script
Scripting
meihan 0 2,121 Último mensaje 28 Junio 2008, 07:05 am
por meihan
Script BATCH BASICO
Scripting
Fx Hound 1 4,364 Último mensaje 15 Mayo 2010, 18:25 pm
por flony
Batch Script Compara IPs
Scripting
Fluflu 3 3,976 Último mensaje 4 Agosto 2010, 14:38 pm
por Eltester
[Batch] Se me cae el script « 1 2 3 »
Scripting
VivaElPirateo 24 13,063 Último mensaje 5 Junio 2012, 06:59 am
por VivaElPirateo
Dud sobre un script ¿como se hace? y duda variable con espacios BATCH
Scripting
r7pyrred 3 3,873 Último mensaje 21 Noviembre 2012, 23:59 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines