我希望程序通过文本文件查看以“F(”开头的行,然后将这些行复制到单独的文本文件中,然后在关闭括号后删除任何内容并在之前添加固定的文本字符串line。(该字符串为“CALL EXTERN / DMIS,M,(DMIS_MACRO_FOR_FILTERING)”,))
我想要复制的整行看起来像这样。
F(Top_OD)=FEAT/CIRCLE,OUTER,CART,0,0,-0.2,0,0,1,0.99975
将有多行遵循相同的格式,以及其他我不感兴趣的行。
我最终想要看起来像
CALL EXTERN/DMIS,M,(DMIS_MACRO_FOR_FILTERING),Top_OD
添加难度,我想要复制的名称的长度可能会有所不同,并且该行中逗号的数量可能会发生变化。
我不是一个交易程序员,但我通常可以把我需要的东西拼凑起来,但这让我受到了一些可能明显的原因的阻碍。任何帮助将不胜感激。 求助 - 以下是代码
DIM FEATURE_LIST_FILENAME,MACRO_CALL_LIST
Dim RegEx : Set RegEx = New RegExp
Dim Matches
RegEx.IgnoreCase = True
RegEx.Global = FALSE
RegEx.Pattern = "F\((\w+)\)\="
FEATURE_LIST_FILENAME = "hardcoded filename"
MACRO_CALL_LIST = "hardcoded filename"
Set AN_INSTANCE_OF_A_FILESYSTEM_OBJECT = CreateObject("Scripting.FileSystemObject")
Set FILE_TO_READ = AN_INSTANCE_OF_A_FILESYSTEM_OBJECT.OpenTextFile(FEATURE_LIST_FILENAME,1)
Set AN_INSTANCE_OF_A_FILESYSTEM_OBJECT = CreateObject("Scripting.FileSystemObject")
Set FILE_TO_WRITE = AN_INSTANCE_OF_A_FILESYSTEM_OBJECT.CreateTextFile (MACRO_CALL_LIST,1)
'Set = CreateObject("Scripting.FileSystemObject")
'Set FILE_TO_WRITE = AN_INSTANCE_OF_A_FILESYSTEM_OBJECT.CreateTextFile(MACRO_CALL_LIST,1)
Do Until FILE_TO_READ.AtEndOfStream
CURRENT_LINE_IN_TEXT = FILE_TO_READ.ReadLine
Set Matches = RegEx.Execute(CURRENT_LINE_IN_TEXT)
If Matches.Count = 1 then FILE_TO_WRITE.Writeline "CALL EXTERN/DMIS,M, (DMIS_MACRO_FOR_FILTERING)," + Matches(0).Submatches(0)
'objFile.Writeline (CURENT_LINE_IN_TEXT)
Loop
FILE_TO_READ.Close
答案 0 :(得分:1)
这是一个简单的批处理文件
FOR /F "tokens=1,2 delims=()" %%G IN (file.txt) DO (
IF "%%G"=="F" echo CALL EXTERN/DMIS,M,(DMIS_MACRO_FOR_FILTERING^),%%H>>newfile.txt
)
答案 1 :(得分:0)
Regular expression in VBScript可能是一个很好的方法。此示例中的正则表达式模式将查找以' F开头的内容(' +一个或多个单词字符,包括下划线+')='。如果未检测到该模式,则不会写入任何内容。
Set RegEx = New RegExp
RegEx.Pattern = "F\((\w+)\)\="
Do Until WScript.stdin.AtEndOfStream
Set Matches = RegEx.Execute(WScript.stdin.ReadLine)
If Matches.Count = 1 then WScript.echo "CALL EXTERN/DMIS,M,(DMIS_MACRO_FOR_FILTERING)," + Matches(0).Submatches(0)
Loop
您可以通过输入输入文件从命令行调用脚本:
cscript reg.vbs //nologo <in.txt >out.txt