Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Noviembre 18, 2008, 06:56:03
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: comando for 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: comando for  (Leído 630 veces)
Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« en: Marzo 03, 2006, 05:13:34 »

este comando sigue dando problemas, y queria ver si ustedes me podian solucionar uno.
el tema es que yo tengo un txt lleno de lineas. y necesito guardar TODAS las lineas o alguna parte de TODAS las lineas. como puedo hacer esto? porque acuerdense de que el comando for scanea todas y, como va haciendo todo en la misma variable, sobreescribe la informacion y al final queda solo la ultima linea.
este problema lo pude solucionar poniendo algunos caracteres especiales en las lineas, entonces hacia un find de ese caracter y me copiaba solo esa linea, pero el problema es que si hago un tasklist >> hola.txt, por ejemplo, no puedo agregarle estos caracteres. que ideas tienen para solucionar esto?
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Modus
Visitante
« Respuesta #1 en: Marzo 03, 2006, 05:19:49 »

En este tema Saok pone un link a un tutorial hecho por i_berbeu bastante bueno miratelo:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
En línea
Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #2 en: Marzo 03, 2006, 05:25:48 »

ya me lo lei a ese manual, y un par de veces. tambien lei un monton de post en el que hablan de este comando, pero creo que nadie dio esta solucion, por eso puse este tema.  (si queres borra este tema y lo pongo en alguno de for ya creado, como quieras, a mi me da igual)
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Modus
Visitante
« Respuesta #3 en: Marzo 03, 2006, 05:38:10 »

No, bueno se puede quedar abierto hasta solucionar tu duda si no has sido capaz de encontrar respuesta despues de buscar  Wink
En línea
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #4 en: Marzo 03, 2006, 07:46:26 »

Supongo que queres algo como esto

bueno yo no tengo tasklist, pero creo que seria algo parecido con dir /b

 @echo off
dir /b > file.tst
for /f "tokens=*" %%a in (file.tst) do echo %%a
del file.tst
pause


Pero tambien puedes hacerlo con tasklist pero yo no lo tengo

intenta con eso

Salu2
En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #5 en: Marzo 03, 2006, 07:58:36 »

no funciona asi. porque el objetivo es guardarlo en una variable. yo tambien habia pensado hacerlo asi, pero no funciona.
yo hice esto, hacelo y fijate los resultados:
for /f "tokens=*" %a in (1.txt) do set a=%a
set

fijate que cuando muestra la variable a solo aparece la ultima linea del archivo.
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #6 en: Marzo 03, 2006, 08:14:10 »

este programa crea una variable con cada uno de ellos

#####################################

 @echo off
set /a n=0
:xd
dir /b > file.tst
for /f "tokens=*" %%a in (file.tst) do call :proceso %%a
del file.tst
pause

:proceso
:: aqui colocas todo el proceso que queres hacer
:: por ejemplo hacer variable con %1
set a=%1
echo %a%

#####################################

   @echo off
set /a n=0
:xd
dir /b > file.tst
for /f "tokens=*" %%a in (file.tst) do call :proceso %%a
del file.tst
pause

:proceso
set a=%1
set /a n=%n%+1
echo directorio%n%: %a%

#####################################

Salu2
« Última modificación: Marzo 03, 2006, 08:24:59 por iobh » En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Hendrix
Visitante
« Respuesta #7 en: Marzo 03, 2006, 08:40:57 »

Yo estoy haciendo un programa bastante util....y tambien tengo problemas kon este komando... :-\ :-\ :-\

Lo ke me interesa es por ejemplo ke el programa me ponga en un .txt el resultado de una kadena del registro en un .txt (asta aki no problem)

pero luego por ejemplo tengo esto:

Reg_SZ "C:\Windows\blablabla.exe"

Reg_Sz "C:\laralarala.exe"

Y lo kiero hacer yo es extraer todos los directorios de este txt y poner solo los directorios dentro de otro .txt....

Y no enkuentro la manera de komo hacer esto.... :-\ :-\ :-\

Weno, Perdon TheTeam por poner una duda mia en tu post, pero era por no poner masd posts sobre este komando.... :-\ :-\

Salu2

Hendrix

En línea
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #8 en: Marzo 03, 2006, 08:59:03 »

Prueba con esto

 @echo off
echo Reg_SZ "C:\Windows\blablabla.exe" > file.txt
echo. >> file.txt
echo Reg_Sz "C:\laralarala.exe"  >> file.txt
for /f "tokens=2" %%a in (file.txt) do echo %%a
del file.txt
pause

Salu2
En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #9 en: Marzo 04, 2006, 07:45:10 »

iobh, me seguis sorprendiendo! funciona como yo queria.
y hendrix no hay problema.
ahora, yo tambien habia pensado algo parecido a lo de iobh, aunque no me funciona, miren y diganme el error:
set a=0
for /f %a in (1.txt) do set /a a=%a%+1 & set %a%=%a

supongo que el problema es que el comando for hace todo en un mismo momento, y no es que le pasa el comando for por cada linea, me siguen? Huh
supongo que por eso la parte del call
bueno, igual, el problema esta resuelto, aunque es un poco complicado entender el codigo, el resultado es el que esperaba.
gracias iobh
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #10 en: Marzo 04, 2006, 08:40:47 »

ah, y si alguien podria explicar un poco el codigo me haria el favor. porque un poco me pierdo.
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #11 en: Marzo 04, 2006, 09:55:27 »

AH yo te lo explico Cheesy

mira

    @echo off
set /a n=0
:xd
dir /b > file.tst
for /f "tokens=*" %%a in (file.tst) do call :proceso %%a
del file.tst
pause

:proceso
set a=%1
set /a n=%n%+1
echo directorio%n%: %a%


Linea por linea

::Apaga echo
 @echo off
:: creala variable n con valor 0
set /a n=0
::seccion xd
:xd
:: hace un dir /b y lo guarda en file.tst
dir /b > file.tst
::Hace un for a file.tst y usa tokens=* osea todo * y a partir de cada linea llama al :proceso
::a partir de la variable %%a
for /f "tokens=*" %%a in (file.tst) do call :proceso %%a
::a partir de aca se ejecuta todo lo que biene despues de el proceso de cada linea
:: borra el file.tst
del file.tst
::pause
pause

::seccion proceso
:proceso
::crea una variable llamada a a partir de %1 osea %%a osea la linea de tokens
set a=%1
::Le suma a la variable n 1 tras cada linea que susede por el for
set /a n=%n%+1
::muestra directiorio:n: nombre del directorio a partir de %a% a partir de %1 a partir de
::cada linea creada por el tokens que estan en el file.tst
echo directorio%n%: %a%
::Luego de ejecutar eso con la priemra linea vuelve al for y sigue con a siguente linea
::y haci hasta el final.



Para que puedas ver este proceso mas faci guarda este archivo y ejecutalo
##########################################################
cd\
set /a n=0
:xd
dir /b > file.tst
for /f "tokens=*" %%a in (file.tst) do call :proceso %%a
del file.tst
pause

:proceso
set a=%1
set /a n=%n%+1
echo directorio%n%: %a%
##########################################################

NOTA!!!!!!
SIN EL  @ECHO OFF
PARA QUE VEAS COMO SE EJECUTA CADA COMANDO
En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #12 en: Marzo 06, 2006, 01:45:28 »

Hola,
bueno leyendo este post "antiguo"
descubri que no habia leido un post de theatem

que decia haci

Citar
set a=0
for /f %a in (1.txt) do set /a a=%a%+1 & set %a%=%a

Bueno de echo Si su pueden hacer hartos comandos a la vez,
es mas puedes usar parentesis como if


te muestro un ejemplo simple


 @echo off
echo 69 > 1.txt
set a=0
for /f "tokens=*" %%a in (1.txt) do (
   set /a a=%a%+1
   set b=%%a
)
echo %a%
echo %b%
pause > nul
exit



guardenlo y veran que si funciona. XD

Salu2

IF %usuarios%==No_entendieron echo iobh explicara
IF %usuarios%==Entendieron echo bien =)
pause
exit
En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #13 en: Marzo 06, 2006, 02:14:52 »

set usuarios==entendi bien
msg * gracias iobh
echo jeje
echo anduvo bien, ahora me voy a poner a probar y despues escribo de nuevo
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #14 en: Marzo 06, 2006, 02:51:03 »

que mal no funciona.
al principio pense que si, pero cuando hice mas "experimentos" pude ver que no, la variable a queda en uno, o sea que le sumo solo una vez, no una por cada linea.
lo que yo hice fue modificarlo un poco para lograr lo que queria, pero no funciono, miren:
echo hola > 1.txt
echo como >> 1.txt
echo va >> 1.txt
set a=0
for /f "tokens=*" %%a in (1.txt) do (
   set /a a=%a%+1
   set %a%=%%a
)
set
pause > nul
exit

aca la variable a queda en 0 y la variable 0 queda en va, o sea la ultima linea.
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #15 en: Marzo 06, 2006, 03:26:24 »

pero creo que esto esta mal
set %a%=%%a
no puedes crear una variable con %varname%

esta mal el code de set no el for

Salu2
En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #16 en: Marzo 06, 2006, 03:57:34 »

si lo hago por separado el set me funciona perfecto, debe ser cuando se juntan los dos comandos.
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
iobh
Magic Flames
Colaborador
*****
Desconectado Desconectado

Mensajes: 693


Odi Profanum Vulgus et Arceo


Ver Perfil
« Respuesta #17 en: Marzo 06, 2006, 05:48:39 »

ajajaja, al fin entendi lo que querias hacer XD

ahora entiendo que queres saver el resultado total de directorios o algo haci.
bueno

no la verdad
for in () do ()
no funciona por que al llamar el proceso con el call :proceso
si funciona ya que hay estas llamando al proceso con cada una de las lineas del for.

pero for in() do(comandos)
funciona pero no igual a como llamar el proceso


Salu2





En línea

"No entiendes realmente algo a menos que seas capaz de explicarselo a tu abuela."

-Albert Einstein

Theteam
mucha observacion y poco razonamiento llevan a la verdad
Colaborador
*****
Desconectado Desconectado

Mensajes: 432



Ver Perfil
« Respuesta #18 en: Marzo 07, 2006, 02:23:25 »

que lastima, mi idea no funciono. pero bueno, esta la tuya que si funciona, asique a utilizar la tuya se ha dicho
En línea



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: comando for « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC