Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: narvaezmv en 29 Junio 2017, 05:09 am



Título: ejecutar linea de comando en .bat
Publicado por: narvaezmv en 29 Junio 2017, 05:09 am
Hola buenas!

requiero de una ayuda tengo un batch en donde quiero que me ejecute la linea de comando para que me copie las lineas de texto completas a otro, actualmente esta asi:

for %f in (prueba_2017.log) do type "%f" >>Ping.txt

"esta es la linea de comando que tengo en el bacth para que me copie la informacion de un .log a un .txt"

pero cuando lo ejecuto en .bat no me hace nada, solo me funciona cuando copio esa linea con el mouse y la pego en un CMD y le doy enter, pero quiero que se me ejecute sola cuando le doy doble clic al .bat

gracias


Título: Re: ejecutar linea de comando en .bat
Publicado por: Eleкtro en 29 Junio 2017, 13:19 pm
pero cuando lo ejecuto en .bat no me hace nada, solo me funciona cuando copio esa linea con el mouse y la pego en un CMD y le doy enter

En un archivo batch-script tienes que duplicar el símbolo % de la variable del FOR:

Código
  1. for %%f in (prueba_2017.log) do type "%%f" >>Ping.txt

Al escribir la instrucción directamente en la CMD, tienes que reducir la cantidad (escribir un % en lugar de dos %%), por eso solo te funciona en la CMD...

De todas formas ese comando no te va a funcionar para el propósito que quieres, puesto que la sintaxis es incorrecta, así lo que haces es leer el nombre del archivo, no las lineas de texto que contiene el archivo... para eso debes usar un FOR /F:

Código
  1. (
  2.    For /F "UseBackQ Tokens=* Delims=" %%# In ("Input.txt") Do (Echo %%~#)
  3. )>"Output.txt"

...Pero si tu intención es, literálmente hablando, copiar el contenido de un archivo a otro, ¿entonces por qué estás usando un FOR para intentar leer las lineas una a una? (además el comando FOR ignorará cualquier linea vacía...), eso es completamente innecesario además de expensivo, en su lugar puedes usar el comando Copy.

Código
  1. Copy "Input.txt" "Output.txt"

...O en su defecto, también puedes utilizar el comando Type (sin un FOR de por medio).

Código
  1. (Type "Input.txt")>"Output.txt"

Saludos