Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: gh1E en 6 Julio 2010, 17:24 pm



Título: BATCH: Como puedo usar dos comandos en una sola linea?[Solucionado]
Publicado por: gh1E en 6 Julio 2010, 17:24 pm
Hi bros;

Espero q alguno de ustedes me puedan ayudar, seguro q si ya q son mas experimentados, bueno mi pregunta es la siguiente, existe alguna forma para poder ejecutar 2 comandos en una sola línea?, mi lío es en esto, quiero tener las lista de archivos "solo nombres" con sus extensiones de un directorio especifico y esos nombres se incluyan dentro de una linea de texto, por ultimo crear un archivo en txt. Mmmm no se si me pude explicar. Se podria hacer con variables?, me pueden dar una mano con eso? pero como newbie x favor...

Los comandos son algo asi, haber si me puedo explicar un poco mejor.  :-\

Código:
@echo off
:: creo una lista de los archivos del directorio
dir /b c:\test > 123.txt
:: ahora aqui es el problema, incluir los nombres de los archivos, luego de un texto
:: ya preestablecido, ejemplo si exite un documento en pdf en el directorio. que
::aparezca en pantalla y que cree un nuevo archivo.
echo Tengo este archivo "nosecualarchivo.pdf" dentro del directorio >> nuevo.txt

Espero me puedan ayudar. :-[

Salu2  ::)



Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: leogtz en 6 Julio 2010, 17:48 pm
Mmmm no se si me pude explicar.

No, no te supiste explicar.

Para usar varios comandos en una linea puedes usar:

Código:
echo Hola & date
echo. & echo Adios & exit /b 0

Pero creo que tu te refieres al uso de comodines para tratar archivos en un directorio.

Si tu quisieras mostrar todos los archivos con extensión .txt y .doc en un directorio, podrías usar:

Código:
dir /b *.txt *.doc

Para todos los archivos:
Código:
dir /b *.*

Saludos.


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: flony en 6 Julio 2010, 18:01 pm
Código:
dir /b c:\test >> 123.txt
para que se genere un renglon por cada archivo
y como dice leo jugar con los comodines en base a lo que vos queres


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: FranciskoAsdf en 6 Julio 2010, 18:37 pm
Según lo que entendí, lo que el necesita es algo como esto :

Tengo el directorio C:\ con el siguiente arbol
Código:
C:\hola\asdf.pdf
C:\pagefile.sys
C:\resplado\sistema\123.txt

Y que en el archivo de salida le salga algo como esto :

ArchivoSalida.txt

Código:

Archivo asdf.pdf dentro del directorio C:\Hola\
Archivo pagefile.sys dentro de C:\
Archivo 123.txt dentro de C:\respaldo\sistema\


Igual no te puedo ayudar porque soy igual de newbie que tu xD!!

Saludos :D!


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: leogtz en 6 Julio 2010, 19:05 pm
Entonces se necesita forzosamente un bucle FOR:

Sin probar:

Código
  1. for /f "tokens=*" %%_ in ('dir /b *.*) do (
  2.        echo Archivo "%%_" en %CD%
  3. )


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: FranciskoAsdf en 6 Julio 2010, 21:18 pm
Código
  1. @echo off
  2.  
  3. for /f "tokens=*" %%_ in ('dir /b *.*') do (
  4.        echo Archivo "%%_" en %CD%
  5. )

funciona, solo le faltaba una comilla dentro del in,


saludos =)


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: leogtz en 6 Julio 2010, 22:25 pm
Código
  1. @echo off
  2.  
  3. for /f "tokens=*" %%_ in ('dir /b *.*') do (
  4.        echo Archivo "%%_" en %CD%
  5. )

funciona, solo le faltaba una comilla dentro del in,


saludos =)

Cierto, gracias, lo escribí aquí mismo.


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: gh1E en 6 Julio 2010, 23:41 pm


Omg!!!!! :D

Son unos "hps" maestros  ;-), no saben cuanto me ayudan con esa solución, y son mas maestros todavía el poder haber entendido lo q necesito  ;D ;D ;D ;D :laugh: :laugh:

El codigo final es el siguiente que me sirvio;

Código:
@echo off
for /f "tokens=*" %%_ in ('dir /b *.txt') do (
        echo Archivo de texto %%_
) >> doc.txt
echo No puedes modificar >> doc.txt
start doc.txt
exit

Ahora si me pueden explicar un poquito nada mas que significa la segunda línea sería perfecto  :P "for /f "tokens=*" %%_ in ('dir /b *.txt') do ("

Por eso es q adoro este foro, ayudan siempre tratando de q todos aprendamos  :silbar:

Salu2  ::)


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: leogtz en 6 Julio 2010, 23:46 pm
Código:
for /f "tokens=*" %%_ in ('dir /b *.txt') do (Acciones)

/f : Opción especial para trabajar con archivos, con cadenas o con salidas de comandos.

"tokens=*" : Quiere decir que quiero absolutamente toda la salida del comandos, en este caso : dir /b

%%_ in : %%_ es una variable temporal que solo será accesible dentro del bucle FOR, al salir de este será destruida.

('dir /b *.txt') : Se procesa la salida del comando "dir /b". Usando comillas simples ' ' se procesan salidas de comandos.

Saludos.


Título: Re: BATCH: Como puedo usar dos comandos en una sola linea?
Publicado por: gh1E en 7 Julio 2010, 00:37 am

Hi bro;

Pues muchas gracias por la info y toda tu ayuda, muy clara. Espero poder colaborarte en algún momento tambien.

Salu2 y mucha suerte.  ::)