BATCH: Como puedo usar dos comandos en una sola linea?[Solucionado]

Iniciado por gh1E, 6 Julio 2010, 17:24 PM

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

gh1E

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.  :-\

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

Si no lo sabes...averigua...
SEr o nO SeR ...( y eso a quien le importa???)

leogtz

Cita de: gh1E en  6 Julio 2010, 17:24 PM
Mmmm no se si me pude explicar.

No, no te supiste explicar.

Para usar varios comandos en una linea puedes usar:

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:

dir /b *.txt *.doc

Para todos los archivos:
dir /b *.*

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

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
si un problema no tiene solucion entonces no es un problema...es algo inevitable

FranciskoAsdf

Según lo que entendí, lo que el necesita es algo como esto :

Tengo el directorio C:\ con el siguiente arbol

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



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!
Asdf debería ser algún tipo de función.

leogtz

Entonces se necesita forzosamente un bucle FOR:

Sin probar:

Código (dos) [Seleccionar]
for /f "tokens=*" %%_ in ('dir /b *.*) do (
        echo Archivo "%%_" en %CD%
)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FranciskoAsdf

Código (dos) [Seleccionar]
@echo off

for /f "tokens=*" %%_ in ('dir /b *.*') do (
        echo Archivo "%%_" en %CD%
)
pause


funciona, solo le faltaba una comilla dentro del in,


saludos =)
Asdf debería ser algún tipo de función.

leogtz

Cita de: Panxin.boo en  6 Julio 2010, 21:18 PM
Código (dos) [Seleccionar]
@echo off

for /f "tokens=*" %%_ in ('dir /b *.*') do (
        echo Archivo "%%_" en %CD%
)
pause


funciona, solo le faltaba una comilla dentro del in,


saludos =)

Cierto, gracias, lo escribí aquí mismo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

gh1E



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;

@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  ::)
Si no lo sabes...averigua...
SEr o nO SeR ...( y eso a quien le importa???)

leogtz

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

gh1E


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.  ::)
Si no lo sabes...averigua...
SEr o nO SeR ...( y eso a quien le importa???)