Vbscript .Batch或.VBS(Win_Server_2003)

Vbscript .Batch或.VBS(Win_Server_2003),vbscript,batch-file,Vbscript,Batch File,我有两个.csv文件:inputfile.csv和mainfile.csv 我需要写一个脚本: 1-将逐个读取inputfile.csv中的所有记录 2-然后查找mainfile.csv中是否存在匹配项 3-如果存在匹配项,则不执行任何操作并从inputfile.csv读取下一条记录 4-否则,如果mainfile.csv中没有匹配项,则将记录从inputfile.csv写入mainfile.csv,这是我在不知道文件结构的情况下用python进行此操作的最佳尝试: with open("mai

我有两个.csv文件:inputfile.csv和mainfile.csv

我需要写一个脚本:

1-将逐个读取inputfile.csv中的所有记录

2-然后查找mainfile.csv中是否存在匹配项

3-如果存在匹配项,则不执行任何操作并从inputfile.csv读取下一条记录


4-否则,如果mainfile.csv中没有匹配项,则将记录从inputfile.csv写入mainfile.csv,这是我在不知道文件结构的情况下用python进行此操作的最佳尝试:

with open("mainfile.csv", "r") as main:
    records = [x.strip() for x in main.readlines()]
with open("inputfile.csv", "r") as input:
    inputs = [x.strip() for x in input.readlines()]
for input in inputs:
    if input not in records:
        records.append(input)
with open("mainfile.csv", "w") as main:
    for record in records:
        main.write(record + "\n")
因此,对于以下文件,请从以下内容开始:

inputfile.csv:

A quick brown fix
Two turtle doves
Feather boa
mainfile.csv:

Some other stuff
Two turtle doves
Friends in low places
Feather boa
Another Fairly boring thing
运行脚本mainfile.csv后,如下所示:

Some other stuff
Two turtle doves
Friends in low places
Feather boa
Another Fairly boring thing
A quick brown fix

此解决方案使用
Scripting.Dictionary
mainfile.csv
中记录每一行。然后,要查看
inputfile.csv
中的一行是否是新的,只需查看字典中是否存在该行。例如:

mainfile.csv

存在,一个
存在,两个
存在,三个
存在,四个
存在,五个
inputfile.csv

存在,两个
新的,一个
存在,四个
新的,两个
新的,三个
mainfile.csv(运行程序后)

存在,一个
存在,两个
存在,三个
存在,四个
存在,五个
新的,一个
新的,两个
新的,三个
代码如下:


选项显式
读取常数=1,写入常数=4,显示常数=8
Dim of so:Set of so=CreateObject(“Scripting.FileSystemObject”)
Dim-oDict:Set-oDict=CreateObject(“Scripting.Dictionary”)
'
'读取'mainfile.csv'的内容。将每一行添加到字典中
'以允许快速查找。
'
lemain的Dim:setoflemain=oFso.OpenTextFile(“mainfile.csv”,用于读取)
暗线
而不是莱曼。阿滕多夫斯河
sLine=oFileMain.ReadLine()
oDict.添加sLine,对
温德
伊莱曼,接近
lemain的集合=无
'
在追加模式下重新打开“mainfile.csv”。
'
lemain的集合=of so.OpenTextFile(“mainfile.csv”,用于外观)
'
'读取'inputfile.csv'的内容。在“mainfile.csv”中写入一行
'仅当字典中不存在该行时。
'
输入的尺寸:输入的尺寸=of so.OpenTextFile(“inputfile.csv”,用于读取)
而不是使用leInput.AtEndOfStream
sLine=oFileInput.ReadLine()
如果不存在oDict.Exists(sLine),则“不是重复!
Echo“找到新行:[”&sLine&“]”
我是莱曼·瑞特琳·斯林
如果结束
温德
oFileInput,关闭
输入的集合=无
'
“把它包起来。
'
伊莱曼,接近
lemain的集合=无
设置oDict=Nothing
一组SO=零
"完!

您可以发布mailfile.csv和inputfile.csv的外观吗?我个人甚至不会尝试用vbscript或批处理来编写这篇文章。我会使用python。另外,记录的顺序是否重要?jgritty,这是两个.csv文件的结构………..1000000000000000000000000 2111111111111111111111111111111111111111111111113333333333333我的python脚本可以很好地处理这些数据。很抱歉,我不能用vbscript来完成。