Ms-Dos - Reemplazar con edlin

   
Vista:

Reemplazar con edlin

Publicado por Denis (12 intervenciones) el 11/11/2008 11:03:11
Hola tengo una cadena y quiero reemplazarla por otra con el edlin, pero no tengo idea como hacerlo en un bat.

Conozco el comando con sus respectivos subcomandos en dos pero al aplicarlos en un bat no me funcionan.

Si alguien me puede ayudar

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reemplazar con edlin

Publicado por Armando Nava  (195 intervenciones) el 11/11/2008 16:25:50
Saludos

Te envio un enlace, mira lo que tienes que hacer es hacer un archivo con los comados de edlin.

He estado probando el de reemplazar, cuando entro al edlin directamente si lo hace, pero todavia no logro hacerlo mediante un script

http://technet.microsoft.com/en-us/library/cc773014.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reemplazar con edlin

Publicado por Armando Nava  (195 intervenciones) el 11/11/2008 16:40:47
Saludos

Creo que el problema es que no le podemos enviar un CTRL+Z a travez de un archivo al edlin, pero si funciona cuando editamos directamente el archivo.

C:>edlin texto.txt
Final del archivo de entrada
*l
1:*El sistema
2: un sistema
*1,2rsistema^Zarbol
1:*El arbol
2: un arbol
*l
1: El arbol
2:*un arbol
*e

C:>

Si se coloca la instrucción en un archivo, no lo hace.

C:>edlin texto.txt < edita.dat
Final del archivo de entrada
*1,2rarbol^Zgrupo
No se ha encontrado
*e

C:>more texto.txt
El arbol
un arbol
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reemplazar con edlin

Publicado por amparitohijo (94 intervenciones) el 18/11/2008 11:42:24
Buenas.
He estado investigando, y efectivamente si que se puede. He hecho pruebas con el acento circunflejo (^) y "Z", pero lo que edlin necesita es un caracter de escape

Lo único que hay que hacer es insertar en el script Ctrl+Z con un editor hexadecimal.

El código hexadecimal de Ctrl+Z es 1A

Os cuento el ejemplo que he hecho:
He creado "Archivo.txt" con el siguiente contenido:
HELLO
Que tal?

He creado "comandos.edl", que es el archivo de comandos para edlin, con el siguiente contenido:
1,1RHELLO,Hola
e

Luego he editado el archivo comandos.edl con un editor hexadecimal (en mi caso, con el plugin HexEdit de Jedit, programa de licencia abierta que recomiendo, www.jedit.org )
Me mostraba esto:

31 2C 31 52 48 45 4C 4C 4F 2C 48 6F 6C 61 0D 0A 1,1HELLO,Hola..
65 0D 0A e..

he cambiado el caracter nº10 (donde pone 2C) de la primera fila por 1A y he grabado los cambios.

Luego he ejecutado lo siguiente: EDLIN Archivo.txt<comandos.edl

Y voilá!! el archivo.txt ha cambiado a:
Hola
Que tal?

Es un poco rizar el rizo, pero poderse se puede. De todos modos, hazle caso a Armando y utiliza Perl, que con edlin es un poco "tedioso". Simplemente era para comentaros que no es lo mismo el caracter de escape "Ctrl+Z" (SUB) que poner en MsDos el acento circunflejo seguido de Z (^Z).

Esto del editor hexadecimal me ha abierto puertas a otros usos y aplicaciones, como por ejemplo para mandarle un archivo con códigos de escape a una impresora, tipo avance de carro, paper feed, etc...

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reemplazar con edlin

Publicado por Armando Nava  (195 intervenciones) el 15/11/2008 17:13:05
Saludos

Puedes usar PERL para hacer la comparación, es muy sencillo de usar, le puedes pasar parametros desde un BAT, tan fácil como:

envia.bat
--------------------
SET archivo=D:ANLPerlprogsdatos.txt
recibe.pl %archivo%
---------------------

recibe.pl
--------------
# El ergumento que recibe (ruta)
my $recibido = shift @ARGV;
print " Recibi el parametro $recibido ";

# Abrimos los archivos a leer y escribir
open(IN, "$recibido");
open(OUT, ">out.txt");
while($linea = <IN>) {

# Usamos expresiones regulares para sustituir
$linea =~s /datos/cosas/g;

# escritura del resultado
print OUT $linea;
}

close(IN);
close(OUT);
system(pause);
-------------

Los cambio te los refleja en el archivo out.txt, a continuación la salida del proceso:
-------------------------------------
D:ANLPerlprogs>more datos.txt
que datos se van
a sustituir por otros datos
que esten en el archivo datos con
extension txt

datos y mas datos

D:ANLPerlprogs>envia.bat
D:ANLPerlprogs>SET archivo=D:ANLPerlprogsdatos.txt
D:ANLPerlprogs>recibe.pl D:ANLPerlprogsdatos.txt

Recibi el parametro D:ANLPerlprogsdatos.txt
Presione una tecla para continuar . . .
D:ANLPerlprogs>more out.txt
que cosas se van
a sustituir por otros cosas
que esten en el archivo cosas con
extension txt

cosas y mas cosas

D:ANLPerlprogs>
--------------------------

Te envio unos enlaces, espero te sirvan.

http://www.perl.com/download.csp
http://www.ulpgc.es/otros/tutoriales/perl/indice.htm
http://es.wikipedia.org/wiki/Perl
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar