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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd  (Leído 5,748 veces)
4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd
« en: 20 Marzo 2015, 23:59 pm »

Se que para dirigir la salida de un comando hacia un archivo se utiliza el simbolo ">"
Por ejemplo:
Código
  1. echo qweruiop > "archivo de texto".txt
Pero si el archivo contenia algo anteriormente, lo elimina, de modo que si no se quiere eliminar lo que contenia anteriormente se utiliza ">>" y asi a~nade la salida del comando al final del archivo
Código
  1. echo esta es la segunda linea >> "archivo de texto".txt
Si en lugar de dirigir la salida hacia un archivo queremos hacer lo contrario, entonces utilizamos "<" o "<<", pero Como? Por ejemplo si quiero imprimir en pantalla el contenido de un archivo sin usar el comando type esto deberia funcionar pero no lo hace.
Código
  1. echo < "archivo de texto".txt
De todos modos lo que realmente me gustaria saber es como podria, como dice el titulo de la pregunta, introducir la parte que yo eliga de un documento de texto en una variable de entorno para guardar datos y poder utilizarlos de nuevo la proxima vez sin tener que introducirlos nuevamente, y como dirigir la salida de un comando hacia un lugar concreto de un archivo sin que sea necesariamente al final, es decir entre dos renglones determinados o incluso detras de un determinado caracter de uno de los renglones.

Otra cosita mas, aunque esto no es tan importante: Me he fijado que aunque escribes help para obtener todos los comandos, en realidad no estan todos (como el comando choice). Como puedo saber cuales son todos los comandos que hay realmente sin tener que mirarlo en internet? Donde estan guardados realmente?


« Última modificación: 21 Marzo 2015, 04:16 am por 4dr14n31t0r » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.697



Ver Perfil
Re: Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd
« Respuesta #1 en: 21 Marzo 2015, 01:19 am »

como podria, como dice el titulo de la pregunta, introducir la parte que yo eliga de un documento de texto en una variable de entorno para guardar datos y poder utilizarlos de nuevo la proxima vez sin tener que introducirlos nuevamente

El título de tu pregunta da a entender algo distinto, asignar el contenido de un archivo de texto ..el cual pueden ser varias lineas, a una variable de entorno del sistema, pero sencillamente eso no es posible, ya que para empezar, las variables de entorno no son multi-linea, y Batch no acepta de forma natural la asignación ni el uso de variables multi-linea, aunque se puede asignar una variable multi-linea con una conocida técnica bastante indocumentada, pero la variable de entorno solo conservará la primera linea:

Código
  1. @Echo OFF & SetLocal EnableDelayedExpansion
  2. Set NewLine=^
  3.  
  4.  
  5.  
  6. REM End New Line
  7.  
  8. Set multiLineStr=Line1!NewLine!Line2
  9. Echo !multiLineStr!
  10. SetX.exe "MyVar" !multiLineStr!
  11.  
  12. Pause&Exit /B 0

Si por lo contrario solo quieres asignar una linea de dicho archivo de texto a una variable de entorno pues ...¿cual es el problema que encuentras?, solo debes usar un FOR para iterar las lineas y utilizar el comando externo SetX cómo en el ejemplo de arriba.

como dirigir la salida de un comando hacia un lugar concreto de un archivo sin que sea necesariamente al final, es decir entre dos renglones determinados o incluso detras de un determinado caracter de uno de los renglones.

Es imposible, no puedes redireccionar el flujo de datos de la salida estándar/error de un comando hacia una posición en concreto del stream de "X" archivo o hacia una linea de un archivo de texto plano, en una herramienta tan limitada cómo es Batch NO.

Aparte de eso, insertar texto en una linea específica de un archivo de etxto es complicado, no por la tarea en si misma, sino por que Batch fue diseñado para automatizar tareas básicas y, aunque la manipulación de texto es algo muy simple en otros lenguajes, en Batch se vuelve una tarea muy tediosa además de muy, muy ineficiente debido a sus limitaciones.

Puedes ver este pequeño set de herramientas que desarrollé hace tiempo en Batch con el que podrá realizar algunas operaciones que te pueden resultar interesantes, entre ellas, insertar texto en una linea específica:
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto

Me he fijado que aunque escribes help para obtener todos los comandos, en realidad no estan todos (como el comando choice). Como puedo saber cuales son todos los comandos que hay realmente sin tener que mirarlo en internet? Donde estan guardados realmente?

Choice no es un comando, es un programa externo a Batch, es una aplicación commandline (choice.exe).

La mayoría de este tipo de aplicaciones externas se utilizan en scripts Batch para intentar compensar la ausencia de brazos y piernas de este limitado "lenguaje de programación" y entonces se les suelen llamar inapropiadamente comandos (o comandos externos).
 
Lo mismo ocurre con find.exe, findstr.exe, xcopy.exe, y un montón de herramientas externas más, no son comandos internos de batch cómo lo es por ejemplo el comando 'Echo', aunque algunas de estas aplicaciones externas si que están documentados en la ayuda de la CMD, no están todas las aplicaciones documentadas en la CMD cómo te has dado cuenta, pero las aplicaciones commandline de Microsoft tienen su propia ayuda commandline, por ejemplo:
Código:
Choice.exe /?

Como puedo saber cuales son todos los comandos que hay realmente sin tener que mirarlo en internet? Donde estan guardados realmente?

En el directorio del sistema, es decir, en 'C:\Windows\System32', encontrarás expandidos los archivos .dll, .com, y .exe que se utilizan por o en la CMD.

Saludos


« Última modificación: 21 Marzo 2015, 01:22 am por Eleкtro » En línea


4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd
« Respuesta #2 en: 21 Marzo 2015, 04:15 am »

El unico problemaes que desconocia la existencia de setx.exe.
Como ya dije, no sabia por que no salen todos los "comandos" cuando escribo help, asi
que tampoco conocia todos los comandos, entre los cuales estaba ese.
La vida es mucho mas sencilla cuando conoces el comando apropiado.
Muchas gracias.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.697



Ver Perfil
Re: Contenido de un documento de texto hacia una variable de entorno en .bat o .cmd
« Respuesta #3 en: 21 Marzo 2015, 05:51 am »

Toma esto, ya no me acordaba que lo tenía xD:
http://www.mediafire.com/view/ff377ft3j8ppe25/Batch_syntax.pdf

Ahí encontrarás documentación sobre Setx, el redireccionamiento de comandos, y otras cosas.

Saludos
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Variable de entorno
Java
alzehimer_cerebral 4 4,035 Último mensaje 3 Abril 2011, 13:15 pm
por alzehimer_cerebral
modificar texto en documento escaneado
Dudas Generales
flako750 1 4,510 Último mensaje 18 Marzo 2012, 23:04 pm
por Aberroncho
Ayuda con la variable de entorno %CD%
Scripting
tomasscfgcu 2 1,795 Último mensaje 15 Mayo 2015, 15:49 pm
por tomasscfgcu
C# - Leer un documento de texto en Gmail
.NET (C#, VB.NET, ASP)
TickTack 1 2,639 Último mensaje 20 Septiembre 2017, 03:33 am
por Eleкtro
variable de entorno
Scripting
eduardoemen 2 1,683 Último mensaje 28 Febrero 2019, 16:28 pm
por eduardoemen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines