在底层代码中工作
处理Convert XLS to CSV on command line的变体,我可以将xls复制为csv。
我只想复制尚未复制的文件,因此需要检查目标目录中是否已存在文件。 想的是:
Set fso=CreateObject("Scripting.FileSystemObject")
Set sourcefldr=fso.getFolder(sourcepath)
Set targetfldr=fso.getFolder(targetpath)
for each sfile in sourcefldr.files
for each tfile in target
if not file in targetfldr.files then
'create excelfile and save as csv
然而file in targetfldr.files
无法正常工作
如何避免每次循环遍历所有目标文件?
事先提前!编辑:
成立@Pankaj Jaju和@Ansgar Wiechers答案,以下工作正在进行中!
csv_format = 6
sourcestring ="C:\sourcefolder"
deststring= "V:\destfolder"
Set fso=CreateObject("Scripting.FileSystemObject")
Set sourcefldr=fso.getFolder(sourcestring)
Set destfldr=fso.getFolder(deststring)
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
for each sfile in sourcefldr.files
destname = left(sfile.name,len(sfile.name)-3) & "csv"
fulldest = fso.buildpath(destfldr, destname)
if not fso.FileExists(fulldest) then
Set oBook = oExcel.Workbooks.Open(sfile)
oBook.SaveAs fulldest, csv_format
oBook.Close False
WScript.Echo "Copied " & fulldest
end if
next
oExcel.Quit
答案 0 :(得分:2)
试试这个!
set fso=createobject("scripting.filesystemobject")
set sourcefldr=fso.getfolder(sourcepath).files
for each sfile in sourcefldr
if not fso.fileexists(fso.buildpath(targetpath, sfile.name)) then
fso.getfile(sfile).copy(fso.buildpath(targetpath, sfile.name))
end if
next
答案 1 :(得分:0)
最好的办法是将所有目标文件夹文件添加到字典中。这样您就可以使用“存在”在字典中搜索它。
Set fso=CreateObject("Scripting.FileSystemObject")
Set filesDic = CreateObject("Scripting.Dictionary")
Set targetfldr=fso.getFolder(targetpath)
'add destination files into dictionary
For Each file in targetfldr.files
filesDic.Add file.name, file.name
Next
这样你需要做的就是检查字典
的新文件名filesDic.Exists(file.name)
这只会返回一个真/假
的更多信息