Acciones sobre archivos de texto. [Batch]

Iniciado por leogtz, 24 Enero 2009, 00:30 AM

0 Miembros y 2 Visitantes están viendo este tema.

Eleкtro

#280
@MauriH

Lo que hace el código es:

por cada respuesta, procesa cada linea del archivo de preguntas y las va escribiendo a un archivo temporal (esto usando Batch se debe hacer así, linea por linea, es un lenguaje muy limitado)
si en el proceso encuentra una coincidencia (una y no más), es decir, si encuentra una linea de respuesta que sea exáctamente IGUAL que la linea de la pregunta, entonces le agrega el sufijo y prefijo a la linea de la pregunta, de lo contrario escribe la linea tal cual
al finalizar de procesar la respuesta, el archivo original se reemplaza por el archivo temporal para que el texto se actualice, y sigue con la siguiente respuesta, empezando a buscar desde la primera linea de preguntas.

si tenemos estos prefijos:
hola
adios


y un archivo respuestas con este contenido:
a
b
c


y un archivo de preguntas con este otro contenido:
a
a
a
b
b
b
c
c
c


Al ejecutar el code, este será el resultado:
holaaadios
a
a
holabadios
b
b
holacadios
c
c


Si no es eso lo que buscas, no lo he entendido bien,
Saludos!








MauriH

@EleKtro H@cker

Entiendo lo q dices, hice una modificación de mi anterior comentario, una muy pequeña, leelo y dime q opinas, gracias de nuevo.

Saludos.

Eleкtro

#282
Cita de: MauriH en 24 Septiembre 2013, 19:29 PMleelo y dime q opinas, gracias de nuevo.

Pues para ser sincero opino que aunque estemos en un hilo de Batch, cualquier otro lenguaje es más viable para hacer esa tarea que Batch, así que en caso de hacerlo, lo haré en otro lenguaje.

EDITO: Ya tengo la solución, pero lo hice en VB.NET así que te mando un privado para no desvirtuar el tema Batch.

. Lo que hice básicamente fue :

1. Delimitar el texto de las preguntas (splitear) usando como caracter el caracter inicial de cada pregunta (#) y agregar los "bloques" a un Array, y así cada item del Array debería contener el título de la pregunta y las 5 respuestas (o las que sean) de dicha pregunta.

2. Realizar el mismo procedimiento con el archivo de respuestas, y asi, en cada item del Array debería haber una sola respuesta.

3. Luego símplemente hay que procesar el Array de respuestas de inicio a fín para hacer un reemplazamiento de string en el mismo índice de Item del Array de preguntas, ya que es óbvio que no va a haber dos respuestas iguales en la misma pregunta.

Saludos!








gustavo2713

Hola Leo: tengo un txt

000659   05203996601   6600011           1   001   010813   
050960   61083359502   6611801           1   001   010813   
050960   61083359502   6600011           1   001   010813   
050005   61630799201   6604131           1   001   020813   
050005   61630799201   6608651           1   001   020813   

y necesito filtrar y separar por los número de la primera columana, de manera de obtener:
000659   05203996601   6600011           1   001   010813 ---> txt 1

050960   61083359502   6611801           1   001   010813 ---> txt 2 
050960   61083359502   6600011           1   001   010813

050005   61630799201   6604131           1   001   020813 ---> txt 3
050005   61630799201   6608651           1   001   020813





MauriH

Ayuda, tengo una consulta, por favor,

Como podría hacer con un batch reemplazar una palabra por una secuencia de números, por ejemplo si quiero reemplazar la palabra "amigo":

Texto de entrada:

texto texto texto amigo texto y más texto
texto amigo texto y más textoamigo
amigotexto y más texto.

Salida:

texto texto texto 0001 texto y más texto
texto 0002 texto y más texto0003
0004texto y más texto.

Gracias,
Saludos.

Eleкtro

#285
Si sólamente se trata de modificar UNA palabra, entonces lo más sencillo es partir el string en un array y hacer un reemplazamiento de string con las cadenas que coincidan, cada uno de los items del array sólamente contendrá una palabra.

Si se quiere modificar más de una palabra entonces yo usaría expresiones regulares.

Recordemos que para hacer la secuencia numérica hay que manipular una variable de tipo String donde deberiamos agregarle "X" cantidad de ceros a la izquierda (Ej: "0001").

Esto es facil de hacer, pero no recomiendo llevar esto a cabo usando Batch, aunque cualquier usuario es libre de proporcionarte una solución,
a ver si el compañero moderador Leo se anima.

Saludos!








fido28

Hola:

Me gustaria saber si me pueden ayudar necesito crear un archivo BAT que se ejecute un programa determinado por decir el excel pero que al iniciar se inicie como otro usuario y que ademas este oculto para que los usuarios no vean el login del BAT.

He investigado un poco creando el BAT y despues se puede pasar a un EXE para que no se visualice pero no logro hacerlo funcionar.

-u usuario -p password "%ProgramFiles%\Microsoft Office\Office14\EXCEL"

Ojala se pueda me encantaria saber GRACIAS de antemano.


Eleкtro

@fido28

La temática de este hilo trata sobre maniuplación de archivos de texto,
para el resto de dudas, formula un nuevo post.

1. Lo más parecido a técnicas de Impersonation en Batch, es usando el comando RunAs.
En consola:

RunAs /?

2. Puedes convertir un script bat a EXE con ExeScript Editor.

Saludos








eternus1492

#288
Hola que tal, me gustaría saber si me podeis echar una mano para crear un archivo .bat que realice lo siguiente:

Tengo por un lado un fichero maquinas.txt con este contenido:

amon,osiris,tutatis,heman,skeletor

y por otro lado tengo un fichero config.txt con este contenido:

** Configuración General del Cliente **

NODENAME        vc1_dc2_dm1
*TCPSERVERADDRESS  10.0.84.21
passwordaccess generate
enablelanfree           yes
*LANFREECommmethod TCPIP
*LANFREETCPport   1502
LANFREETCPServeraddress 10.0.84.23



** Planificadores y Logs **

schedmode       prompted
schedlogname    c:\tivoli\tsm\baclient\logs\dsmsched_dc2_dm1.log
errorlogname    c:\tivoli\tsm\baclient\logs\dsmerror_dc2_dm1.log
schedlogretention       7
errorlogretention       7


** TSM4VE Parámetros **

VMCHOST   esxvcpsp.bankinter.bk
VMCuser TSM
VMMC DEFECTO
VMCTLMC DEFECTO
VMBACKUPTYPE    FULLVM
VMFULLTYPE VSTOR
VMVSTORTRANSPORT        san:nbd

VMPROCESSVMWITHPRDM     yes
VMPROCESSVMWITHINDEPENDENT      yes
VMENABLETEMPLATEBACKUPS yes
VMBACKDIR c:\tivoli\tsm\baclient\mnt
VMMAXPARALLEL 5
VMLIMITPERHOST 3
VMLIMITPERDATASTORE 3
HTTPPORT 1585


** Parámetros Optimización Protectier **

resourceutilization 8
TXNBYTELIMIT 2097152



** Máquinas en Backup **

DOMAIN.VMFULL vm=vm1,vm2,vm3;-vm=rma*,apo*,vdi*,febe*,elias*,jenk*,parsp*,waslin*,propo*,win7*,boco*,webser*,axg*,one*,read*,maja*,ntin*,pgue*,ext*"


MANAGEDSERVICES WEBCLIENT



Lo que necesitaria es hacer un bat que coja la lista de máquinas del primer fichero:

amon,osiris,tutatis,heman,skeletor

y la ponga en la parte

vm=vm1,vm2,vm3;

del segundo fichero, para que quede de esta forma

vm=amon,osiris,tutatis,heman,skeletor;



Un saludo cordial.




[MOD]: Utiliza el botón de insertar código para insertar código o contenido de texto

vicox19

tengo el siguiente caso.
todos los dias tengo que instalar un programa en mi empresa y necesito cambiar el numero de la version en 10 archivos de textos diferentes.
por ejemplo:

version de ayer: 1.1.20
version de hoy: 1.1.21
el instalador se encuentra hubicado digamos en C:\instaladores
hoy quiero instalar la version actual y para eso tengo que abrir 10 diferentes archivos de texto hubicados en el mismo folder. Dentro el archivo hay un parametro VERSION ACTUAL: 1.1.20  (que es la version de ayer)

quisiera saber con un archivo BATCH puedo hacer que me pase lo siguiente al ejecutar el BATCH:

cual es la version actual?:
1.1.21
abrir archivo1.txt reemplazar 1.1.20 por 1.1.21
abrir archivo2.txt reemplazar 1.1.20 por 1.1.21
abrir archivo3.txt reemplazar 1.1.20 por 1.1.21
.....
abrir archivo10.txt reemplazar 1.1.20 por 1.1.21


es posible???