Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - eddergui

#1
Scripting / Re: Ayuda en código vbscript
22 Enero 2016, 22:37 PM
Buenas tardes estimados:

Logré solucionar el problema con este código:

Código (vb) [Seleccionar]
arreglo = Array(Null, "0.03125", "0.0625", "0.09375", "0.125", "0.15625")
arreglotxt = Array(Null, ".\Edificio2DA1.dat", ".\Edificio2DA2.dat", ".\Edificio2DA3.dat", ".\Edificio2DA4.dat", ".\Edificio2DA5.dat")
counter=0

Set FSO   = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(".\").Files

For counter=1 to 5

TFile=arreglotxt(counter)
s=arreglo(counter)'toma el string correspondiente a la posición "counter" del "arreglo".

nreemplazo=reemplazo(TFile, s) 'resultado de la función de reemplazo, donde si encuentra un "string=0.03125" hace el correspondiente cambio con el "string=s".
Set NewFile  =FSO.CreateTextFile(".\"&"Edificio2DA"&counter&".dat", True) 'crea un archivo nuevo con el mismo nombre del archivo "File"
NewFile.Write nreemplazo 'Sobreescribe el resultado de la función de reemplazo en el nuevo File creado en el paso anterior.
NewFile.Close

Next

function reemplazo(TextFile, num)

TextContent = CreateObject("Scripting.FileSystemObject"). _
  OpenTextFile(TextFile, 1, False).ReadAll
 
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global  = True
objRegEx.Pattern  = "0.03125"  
Reemplazo = objRegEx.Replace(TextContent, num)

end function


Si alguien puede optimizarlo mejor, sería genial,

Saludos!
#2
Scripting / Re: Ayuda en código vbscript
22 Enero 2016, 20:35 PM
Buenas tardes:

He estado intentando resolver el problema de reemplazar el string="0.03125" dentro de cada "archivo.dat" con cada contenido del arreglo=Array(Null, "0.03125", "0.0625", "0.09375", "0.125", "0.15625"). Por ejemplo:

1.- En el archivo: Edificio2DA1 buscar dentro de este un string="0.03125" y reemplazar por "0.03125".
2.- En el archivo: Edificio2DA2 buscar dentro de este un string="0.03125" y reemplazar por "0.0625"
3.- En el archivo: Edificio2DA3 buscar dentro de este un string="0.03125" y reemplazar por "0.09375"
4.- En el archivo: Edificio2DA4 buscar dentro de este un string="0.03125" y reemplazar por "0.125"
5.- En el archivo: Edificio2DA5 buscar dentro de este un string="0.03125" y reemplazar por "0.15625"

Me ha funcionado solo para un archivo, pero luego cuando hice las modificaciones como por ejemplo agregarle el bucle, me arroja el error: Ruta de acceso no encontrada, al momento de ejecutar.

El código que trabajé es el siguiente, le agregué comentarios:

Código (vb) [Seleccionar]
arreglo = Array(Null, "0.03125", "0.0625", "0.09375", "0.125", "0.15625")
counter=0

Set FSO   = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(".\").Files

For Each File in Files

Set TFile = FSO.GetFile(".\"&File.name) 'Da el path del archivo File, ejm:C:\CarpetaP\CarpetaS\archivo.dat

if Lcase(FSO.GetExtensionName(File))=Lcase("dat") then ' Condicional solo para  hacer la búsqueda de archivos con extensión.dat

counter=counter+1 'contador aumenta cada vez que lee un archivo File
s=arreglo(counter)'toma el string correspondiente a la posición "counter" del "arreglo".

nreemplazo=reemplazo(TFile, s) 'resultado de la función de reemplazo, donde si encuentra un "string=0.03125" hace el correspondiente cambio con el "string=s".
Set NewFile  =FSO.CreateTextFile(".\"&"Edificio2DA"&counter&".dat", True) 'crea un archivo nuevo con el mismo nombre del archivo "File"
NewFile.Write nreemplazo 'Sobreescribe el resultado de la función de reemplazo en el nuevo File creado en el paso anterior.
NewFile.Close

end if
Next

function reemplazo(TextFile, num)

TextContent = CreateObject("Scripting.FileSystemObject"). _
  OpenTextFile(TextFile, 1, False).ReadAll
 
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global  = True
objRegEx.Pattern  = "0.03125"  
Reemplazo = objRegEx.Replace(TextContent, num)

end function


Como siempre les agradezco sus comenterios y sugerencias,

saludos!
#3
Scripting / Re: Ayuda en código vbscript
22 Enero 2016, 17:54 PM

Gracias _TTFH_3500, me quedó claro.

Les agradecería me puedan sugerir que podría hacer para resolver el problema que plantee en:
Cita de: eddergui en 22 Enero 2016, 16:44 PM

, saludos!

#4
Scripting / Re: Ayuda en código vbscript
22 Enero 2016, 16:44 PM
Muchas gracias _TTFH_3500, me queda la duda en que no se pueda utilizar el "set" dentro de una iteración, por ejemplo si quiero sobreescribir cada archivo.dat de una carpeta reemplazando su contenido cada vez que pasa a leer el siguiente archivo.dat, estaría forzado a usar "For Each File in Files end" y la declaración "set", por ejemplo si quiero salvar el resultado de la función "nreemplazo=reemplazo(file,string)" necesito declarar "set NewFile =FSO.CreateTextFile("./ archivo.dat", true)" y luego "NewFile.Write nreemplazo" para poder sobreescribir en el "archivo.dat".

Estuve intentando hacer esto pero no me funciona, donde he declarado un array que contenga los números objetivos que van a reemplazar "0.03125" cada vez que lo encuentre dentro de los archivos.dat  y este resultado se sobrescriba en el mismo archivo.dat.

Código (vb) [Seleccionar]
arreglo = Array(Null, 0.03125, 0.0625, 0.09375, 0.125, 0.15625)
counter=0

Set FSO   = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(".\").Files

For Each File in Files
Set Tfile=FSO.getfile(File)

counter=counter+1
s=arreglo(counter)

nreemplazo=reemplazo(Tfile, s)

Set NewFile  =FSO.CreateTextFile(".\"&"Edificio2DA"&counter&".dat", True)
NewFile.Write nreemplazo
NewFile.Close
Next

function reemplazo(TextFile, num)

TextContent = CreateObject("Scripting.FileSystemObject"). _
 OpenTextFile(TextFile, 1, False).ReadAll
 
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global  = True
objRegEx.Pattern  = "0.03125"  
Reemplazo = objRegEx.Replace(TextContent, num)

end function


Gracias de antemano por sus comentarios y sugerencias
, saludos!
#5
Scripting / Ayuda en código vbscript
22 Enero 2016, 00:11 AM
Buenas noches estimados;

El propósito de mi código es que genere 5 copias de un archivo .dat indexados del 1 al 5, el cual les muestro a continuación:

Código (vb) [Seleccionar]
Dim counter as integer
Dim objfso, archivotexto, s, writefile
Dim file_Name as string

counter = 1

Do until counter =5

set objfso = createobject("scripting.filesystemobject")
Set archivotexto = objfso.opentextfile(".\Edificio2DA.dat",1)
s = archivotexto.readline

file_Name=".\"&counter&".dat"
set writefile = objfso.CreateTextFilefile_Name, True)
writefile.Write("s")
writefile.Close

set objfso=nothing
counter=counter+1

Loop



El problema es que al ejecutar me sale un error de compilación, les agradezco sus comentarios y sugerencias.

, saludos
#6
Buenas tardes estimados:

Estoy trabajando para generar archivos txt. en base a un archivo txt de origen. Pero que en cada archivo txt generado se cambie el "string"="X240.7" por un contador que aumenta cada vez que se genera un archivo txt nuevo. Este es el código que trabajé;


Código (actionscript) [Seleccionar]
@Echo OFF & SetLocal EnableDelayedExpansion
set "ST=X240.7"
set "fileCount=2"
set "i=1"
For /L %%i in (1,1,15) do(

set "inputFile=.\Archivo!i!.dat"

For /F "UseBackQ Tokens=* Delims=" %%a In ("%inputFile%") Do (
set "line=%%a"
set "VER=i+1"
set line=!line:%ST%=%VER%!

echo.!line! >>".\Archivo!fileCount!.dat"
If  /I "!line:~-3!" EQU "FIN" (
Set /A "fileCount+=1"
)
)
)
Pause&Exit /B 0


El contenido del archivo txt de origen es:


ZZZ                                               
X0.0  Y0.0  Z30.0                             
M601                                           
M2
G0 Z-100.0
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X247.5 Y317.5 F2
N490  G1 X240.7 Y324.3 Z0.5 F2
N1  G1 X240.1 Y324.9 Z3.6 F2
N2  G1 X239.5 Y325.5 Z4.9 F2
N3  G1 X238.8 Y326.1 Z4.9 F2
N4  G1 X238.2 Y326.8 Z2.4 F2
N5  G1 X237.6 Y327.4 Z1.4 F2
N6  G1 X237.0 Y328.0 Z0.9 F2
N490  G1 X236.4 Y328.6 Z0.7 F2
N1 G1 X235.7 Y329.2 Z3.3 F2
N2  G1 X235.1 Y329.8 Z4.1 F2
N3  G1 X234.5 Y330.5 Z0.8 F2
N4  G1 X233.9 Y331.1 Z1.7 F2
N5  G1 X233.3 Y331.7 Z4.9 F2
N6  G1 X232.6 Y332.3 Z3.7 F2
N490  G1 X232.0 Y332.9 Z1.1 F2
N1  G1 X231.4 Y333.6 Z0.6 F2
N2  G1 X230.8 Y334.2 Z0.6 F2
N3  G1 X230.2 Y334.8 Z4.2 F2
N4  G1 X229.6 Y335.4 Z5.0 F2
N5  G1 X228.9 Y336.0 Z5.0 F2
N6  G1 X228.3 Y336.7 Z5.0 F2
N490  G1 X226.5 Y338.5 Z1.0 F2
G0 Z-100.0
G0 Y0
/*FIN

Solo logré generar un archivo txt, les agradezco sus comentarios y sugerencias.

, saludos
#7
Buenos días estimados:

Tengo un programa comercial (CANNY3D) con interfez gráfica que abre exclusivamente archivos .txt y .dat y procesa los datos con solo presionar un ícono de la barra de herramientas y  luego es necesario presionar otro ícono para exportar los resultados del procesamiento de datos a archivos .txt. El problema es que tengo que hacer esto unas 1800 veces. Creo que con los post que leí de este foro puedo generar los 1800 archivos .dat para iniciar a ejecutar el programa, sin embargo como puedo automatizar la manipulación de los íconos del programa para finalmente obtener los resultados que deseo, gracias de antemano por sus comentarios y sugerencias.  :D

Nota: EL CANNY3D  es un programa que realiza análisis dinámico no lineal de estructuras de hormigón armado.

Saludos