Tengo una carpeta donde cada lapso de tiempo me aparecen 5 archivos .txt provenientes de un proceso externo ( ej.: MES_10102020.txt, TRIMESTRE_2020.txt, SEMESTRE.txt) todos tienen un prefijo mas la fecha. Debo abrirlos, reemplazar los puntos por comas. Lo ideal sería no tener q cargar librerias, quizas hacerlo con vbscript pero me esta costando encontrar info. Logre armar un bat con parametros que ejecuta el vbs y reemplaza los caracteres , pero tengo que cambiarle el nombre del archivo y la idea es que el 1er proceso lea la carpeta y aplique a todos los archivos txt de la misma.
Esto es lo que hice :
If WScript.Arguments.Count <> 3 then
WScript.Quit
end If
Reemplazar WScript.Arguments.Item(0), WScript.Arguments.Item(1), WScript.Arguments.Item(2)
function Reemplazar(strFile, strFind, strReplace)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInputFile = objFSO.OpenTextFile(strFile,1)
strTempDir = objFSO.GetSpecialFolder(2)
Set objTempFile = objFSO.OpenTextFile(strTempDir & "\temp.txt",2,true)
do until objInputFile.AtEndOfStream
objTempFile.WriteLine(Replace(objInputFile.ReadLine, strFind, strReplace))
loop
objInputFile.Close
Set objInputFile = Nothing
objTempFile.Close
Set objTempFile = Nothing
objFSO.DeleteFile strFile, true
objFSO.MoveFile strTempDir & "\temp.txt", strFile
Set objFSO = Nothing
end function
A esto lo llamo con un bat :
reemplazar.vbs MES10102020.txt" "." ","
Pero necesito algo que lea todos los archivos , los procese y los guarde con la modificacion. El equipo es un virtual con xp.
' El siguiente Script reemplaza todos los "." por "," en
' todos los archivos con la extension ".txt" en la carpeta actual
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(".").Files
If InStr(f, ".txt") Then
txt = fso.OpenTextFile(f).ReadAll
txt = Replace(txt, ".", ",")
fso.OpenTextFile(f, 2).Write txt
End If
Next
Ya lo adaptas a tu estilo.
Windows Script 5.6 Documentation:
https://raw.githubusercontent.com/pmachapman/VBSE/master/Distribution/script56.chm