您的位置:首页 > 数据库

统计文件信息及生成SQL语句(VBS)实例

2011-07-15 13:42 531 查看
查询文件名(带日期及大小)_0714_1655.vbs

'======================================================================================
'dim ws,fso,f,fd,files,tmpname,url,result,preFix
set ws=createobject("wscript.shell")
set fso = CreateObject("Scripting.FileSystemObject")
set fd = fso.getfolder(ws.currentdirectory)
set files=fd.files
'生成前缀
result=ws.currentdirectory

result =replace(result ,"\","+")
result =replace(result ,".","_")
result =replace(result ,":","=")
'建立一个文本,存储文件的名字
result= result & "_" & "fileinfos.txt"

set resultFile=fso.createtextfile(result,2,ture)
for each f in files
'读取文件的名字 要将文件名都存成小写可 将f.name 改成:lcase(f.name)
tmpname="Name:<" & f.name &">Lastdate:<"& f.datelastmodified &">Size:<"& f.Size &">"'BYTE
'上面语句换成以下语句后,就只查询文件名,而没有其它信息
'tmpnamef.name
'把原来的文件名保存起来
resultFile.writeline tmpname
next

MsgBox "   完成!"


转换成SQL20110715_1324.VBS

Const ForReading=1
Const ForWriting=2
Const ForAppending=8
set fso=createobject("scripting.filesystemobject")
'源文件
strSrcFile=InputBox("请输入源文件")'"W=+素材一致性问题_fileinfos.txt"
set sourceFile=fso.opentextfile(strSrcFile,ForReading)
'目标文件
resultFile="result_" & strSrcFile & TimeStr(Now) & ".sql"
set dstFile=fso.opentextfile(resultFile,ForWriting,true)
'''''''''''''''''''''''构造SQL语句
strSql= "--查询条件中硬盘文件信息来自文件:" & strSrcFile & vbCr
strSql=strSql & "SELECT * FROM m_uploadtask where " & vbCr & GetSqlCondition(sourceFile,"2011-6-26") & vbCr & ""
'MsgBox strSql'测试输出
'''''''''''''''''''''''
dstFile.Write(strSql)
sourceFile.Close
dstFile.Close

'===============================================================得到SQL语句中的条件表达式
Function GetSqlCondition(srcFile,timeBefore)
oTimeBefore=DateValue(timeBefore)

nValidCount=0
nTotalCount=0
delimiter="|"
condition = " materialid IN ("
conditionNotValid="/*"
do until srcFile.atendofstream
sLine=TransLineFromat(srcFile.readline,delimiter)
arr=Split(sLine,delimiter)
'以下是解析出的每一行中的三个变量
'If UBound(arr)=2 Then

sName=arr(0)
sTime=arr(1)
oTime=DateValue(sTime)'不能用TimeValue
sSize=arr(2)

sMaterialID =Left(sName,InStr(sName,"_")-1)
'nSize=CLng(sSize)

'MsgBox sMaterialID
nTotalCount=nTotalCount+1
if(oTime < oTimeBefore) Then
nValidCount=nValidCount+1
condition=condition & "'" & sMaterialID & "',"
Else
conditionNotValid=conditionNotValid & sMaterialID & "(" & sTime & "),"
End If
'end if
'result=result & " " & sName & " " & oTime & " " & nSize &vbCr'测试用
loop
condition=Left(condition,Len(condition)-1)
condition=condition & ")"
conditionNotValid=conditionNotValid & "*/"
'在SQL注释中添加统计信息
condition= condition & vbCr &"--有效ID是指"& timeBefore &"以前的素材ID,"
condition= condition & vbCr &"--valid/total=" & nValidCount &"/" & nTotalCount & vbTab &"未用的ID如下:"
condition= condition & vbCr &"--" &conditionNotValid
GetSqlCondition=condition
End Function
'===============================================================格式转换
Function TransLineFromat(sLine,delimiter)
sReturn=sLine
D = Replace( D, N & ",", "",1,1)
sReturn=Replace( sReturn,"Name:<","",1,1)
sReturn=Replace( sReturn,">Lastdate:<",delimiter,1,1)
sReturn=Replace( sReturn,">Size:<",delimiter,1,1)
sReturn=Replace( sReturn,">","",1,1)
TransLineFromat=sReturn
End Function
'===============================================================将时间类型转换成字符串
Function TimeStr(t)
ret=Year(t) & "" & Month(t) & "" & Day(t) & "_" & Hour(t) & "" & Minute(t)' & "" & Second(t)
TimeStr = CStr(ret)
End Function


仅根据ID文件生成SQL_ID条件.VBS

Const ForReading=1
Const ForWriting=2
Const ForAppending=8
set fso=createobject("scripting.filesystemobject")
'源文件
strSrcFile=InputBox("请输入源文件")'"W=+素材一致性问题_fileinfos.txt"
set sourceFile=fso.opentextfile(strSrcFile,ForReading)
'目标文件
resultFile="Sql条件_" & strSrcFile & TimeStr(Now) & ".sql"
set dstFile=fso.opentextfile(resultFile,ForWriting,true)
'''''''''''''''''''''''构造SQL语句
strSql= "--查询条件中信息来自文件:" & strSrcFile & vbCr
strSql=strSql & "SELECT * FROM m_uploadtask where " & vbCr & GetSqlCondition(sourceFile) & vbCr & ""
'MsgBox strSql'测试输出
'''''''''''''''''''''''
dstFile.Write(strSql)
sourceFile.Close
dstFile.Close

'===============================================================得到SQL语句中的条件表达式
Function GetSqlCondition(srcFile)
nTotalCount=0
condition = " materialid IN ("
do until srcFile.atendofstream
sLine=srcFile.readline
if sLine<>"" Then
nTotalCount=nTotalCount+1
condition=condition & "'" & sLine & "',"
End If
loop
condition=Left(condition,Len(condition)-1)
condition=condition & ")"
'在SQL注释中添加统计信息
condition= condition & vbCr &"--total=" &  nTotalCount & vbTab
GetSqlCondition=condition
End Function

'===============================================================将时间类型转换成字符串
Function TimeStr(t)
ret=Year(t) & "" & Month(t) & "" & Day(t) & "_" & Hour(t) & "" & Minute(t)' & "" & Second(t)
TimeStr = CStr(ret)
End Function

删除文件脚本.vbs

Const ForReading=1
Const ForWriting=2
Const ForAppending=8
Set objShell = CreateObject("Wscript.Shell")
set fso=createobject("scripting.filesystemobject")
'Executeglobal fso.opentextfile("DeleteFileService.vbs ", 1).readall

'建立日志文件
strDelLogFile="DeletedFile_" & TimeStr(Now) & ".log"
set fLog=fso.opentextfile(strDelLogFile,ForWriting,true)

Dim arrA(0)'A类1
arrA(0)="7777-7777"
Dim arrB(1)'B类2
arrB(0)="9999-0007"
arrB(1)="9999-0006"
Dim arrF(3)'F类4
arrF(0)="4050-0882"
arrF(1)="7111-4204"
arrF(2)="5025-0843"
arrF(3)="6032-0803"
Dim arrG(9)'G类10
arrG(0)="9999-0001"
arrG(1)="9999-0002"
arrG(2)="9999-0021"
arrG(3)="9999-0008"
arrG(4)="9999-0027"
arrG(5)="9999-0039"
arrG(6)="9999-0041"
arrG(7)="9999-0043"
arrG(8)="9999-0044"
arrG(9)="9999-9999"
Dim arrI(0)'I类1
arrI(0)="9999-0045"

'''真实的删除操作
strLogItem=DeleteArrayFile(fso,arrA)
fLog.Write(strLogItem)
strLogItem=DeleteArrayFile(fso,arrB)
fLog.Write(strLogItem)
'F类暂不处理
'strLogItem=DeleteArrayFile(fso,arrF)
'fLog.Write(strLogItem)
strLogItem=DeleteArrayFile(fso,arrG)
fLog.Write(strLogItem)
strLogItem=DeleteArrayFile(fso,arrI)
fLog.Write(strLogItem)

fLog.Close

'===============================================================这个没有用到
Function GetIDSqlCondition(fso,arrFile)
condition=" materialid IN ("
For i = 0 To UBound(arrFile)
strID = arrFile(i)
condition=condition & "'" & strID & "',"
Next
condition=Left(condition,Len(condition)-1)
condition=condition & ")"
GetIDSqlCondition =condition
End Function
'===============================================================将时间类型转换成字符串
Function TimeStr(t)
ret=Year(t) & "" & Month(t) & "" & Day(t) & "_" & Hour(t) & "" & Minute(t)' & "" & Second(t)
TimeStr = CStr(ret)
End Function
'===============================================================删除一个数组中的文件
Function DeleteArrayFile(fso,arrFile)
strDelDetail=""
For i = 0 To UBound(arrFile)
strID = arrFile(i)
strDelDetail=strDelDetail & DeleteByMaterialID(fso,strID)
Next
strDelDetail=strDelDetail & vbCr
DeleteArrayFile =strDelDetail
End Function

'===============================================================删除strID对应的所有文件
Function DeleteByMaterialID(fso,strID)

'真实路径
pathKeyfram="\\172.26.142.82\server3_fs1\keyframe\"
pathUploadSD="\\172.26.142.82\server3_fs1\uploadsd\"
pathPrepareSD="\\172.26.142.81\server2_fs1\preparesd\"
pathLow="\\172.26.142.99\lowstream\"

strRetDetail=""
cnt=0
strTem=pathKeyfram & strID & "_icon.dkf"
bSucc=DeleteFile(fso,strTem)
If bSucc =True Then
strRetDetail=strRetDetail & strTem & vbCr
cnt=cnt+1
End If
strTem=pathUploadSD & strID & "_sd.mxf"
bSucc=DeleteFile(fso,strTem)
If bSucc =True Then
strRetDetail=strRetDetail & strTem & vbCr
cnt=cnt+1
End If
strTem=pathPrepareSD & strID & "_sd.mxf"
bSucc=DeleteFile(fso,strTem)
If bSucc =True Then
strRetDetail=strRetDetail & strTem & vbCr
cnt=cnt+1
End If
strTem=pathLow & strID & "_lsd.wmv"
bSucc=DeleteFile(fso,strTem)
If bSucc =True Then
strRetDetail=strRetDetail & strTem & vbCr
cnt=cnt+1
End If
strRetDetail="共删除" & cnt & "个文件,文件信息:" & vbCr & strRetDetail
DeleteByMaterialID = strRetDetail
End Function

'===============================================================删除单个文件
Function DeleteFile(fso,strFile)
bRet=True
If fso.FileExists(strFile) Then
Set f1=fso.GetFile(strFile)
fso.DeleteFile f1
bRet=True
Else
bRet=False
End If
DeleteFile = bRet
End Function


文件改名.vbs

'======================================================================================
'dim ws,fso,f,fd,files,tmpname,url,strResultFileName,preFix
set ws=createobject("wscript.shell")
set fso = CreateObject("Scripting.FileSystemObject")

'真实路径
'关键帧
pathKeyfram="\\172.26.142.82\server3_fs1\keyframe\"
'上载区
pathUploadSD="\\172.26.142.82\server3_fs1\uploadsd\"
pathUploadHD="\\172.26.142.82\server3_fs1\uploadhd\"
'备播区
pathPrepareSD="\\172.26.142.81\server2_fs1\preparesd\"
pathPrepareHD="\\172.26.142.83\server4_fs1\preparehd\"
'低码区
pathLowSD="\\172.26.142.99\lowstream\"
pathLowHD="\\172.26.142.81\server2_fs1\lowerhd\"
'建立一个LOG文件
strResultFileName=ws.currentdirectory
strResultFileName =replace(strResultFileName ,"\","+")
strResultFileName =replace(strResultFileName ,".","_")
strResultFileName =replace(strResultFileName ,":","=")
strResultFileName= strResultFileName & "_" &  TimeStr(Now) & "LOG.txt"
set fLog=fso.createtextfile(strResultFileName,2,ture)

'开始重命名
'关键帧
cnt=ReName(fso,pathKeyfram,"_ICON.DKF",".DKF",fLog)
'上载区
cnt=ReName(fso,pathUploadSD,"S_SD.mxf","S.mxf",fLog)
cnt=ReName(fso,pathUploadHD,"H_HD.mxf","H.mxf",fLog)
'备播区
cnt=ReName(fso,pathPrepareSD,"S_SD.mxf","S.mxf",fLog)
cnt=ReName(fso,pathPrepareHD,"H_HD.mxf","H.mxf",fLog)
'低码区
cnt=ReName(fso,pathLowSD,"S_LSD.wmv","S.wmv",fLog)
cnt=ReName(fso,pathLowSD,"S_LS.wmv","S.wmv",fLog)
cnt=ReName(fso,pathLowSD,"SL.wmv","S.wmv",fLog)

cnt=ReName(fso,pathLowHD,"H_LHD.wmv","H.wmv",fLog)
cnt=ReName(fso,pathLowHD,"H_LH.wmv","H.wmv",fLog)
cnt=ReName(fso,pathLowHD,"HL.wmv","H.wmv",fLog)
cnt=ReName(fso,pathLowHD,"H_LS.wmv","H.wmv",fLog)

fLog.Close
MsgBox "   完成!"
'===================================================================================对指定文件夹下文件重命名
Function ReName(fso,path,strOld,strNew,fLog)
fLog.writeline "正在重命名:" & path & "    " &  strOld & "->" & strNew
set fd = fso.getfolder(path)
set files=fd.files
newName=""
oldName=""
nDealedCnt=0
for each f in files
newName=f.Name
oldName=f.Name
If InStr(oldName,strOld)>0  Then
newName=Replace( newName,strOld,strNew,1,1)
'newName=Replace( newName,"H.mxf","H_HD.mxf",1,1)
'重命名
fso.MoveFile path & oldName, path &  newName
'记日志
fLog.writeline oldName & "->" & newName
'统计
nDealedCnt=nDealedCnt+1
End If
next
fLog.writeline "已处理:" & nDealedCnt & "个"
ReName = nDealedCnt
End Function

'===============================================================将时间类型转换成字符串
Function TimeStr(t)
ret=Year(t) & "" & Month(t) & "" & Day(t) & "_" & Hour(t) & "" & Minute(t)' & "" & Second(t)
TimeStr = CStr(ret)
End Function


文件改名_改DB.sql

--标清
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'S_SD.mxf', 'S.mxf')
WHERE    FILENAME LIKE '%S_SD.mxf%'

update M_UPLOADTASK set TECHNICREPORT=Replace(Cast(TECHNICREPORT as varchar(8000)),'S_SD.mxf','S.mxf')
WHERE    TECHNICREPORT LIKE '%S_SD.mxf%'

--高清
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'H_HD.mxf', 'H.mxf')
WHERE    FILENAME LIKE '%H_HD.mxf%'

update M_UPLOADTASK set TECHNICREPORT=Replace(Cast(TECHNICREPORT as varchar(8000)),'H_HD.mxf','S.mxf')
WHERE    TECHNICREPORT LIKE '%H_HD.mxf%'

--关键帧

UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, '_ICON.DKF', '.DKF')
WHERE    FILENAME LIKE '%_ICON.DKF%'

--低码
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'H_LHD.wmv', 'H.wmv')
WHERE    FILENAME LIKE '%H_LHD.wmv%'
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'H_LH.wmv', 'H.wmv')
WHERE    FILENAME LIKE '%H_LH.wmv%'
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'HL.wmv', 'H.wmv')
WHERE    FILENAME LIKE '%HL.wmv%'

UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'H_LS.wmv', 'H.wmv')
WHERE    FILENAME LIKE '%H_LS.wmv%'

UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'S_LSD.wmv', 'S.wmv')
WHERE    FILENAME LIKE '%S_LSD.wmv%'
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'S_LS.wmv', 'S.wmv')
WHERE    FILENAME LIKE '%S_LS.wmv%'
UPDATE    MS_FILE
SET     FILENAME = REPLACE(FILENAME, 'SL.wmv', 'S.wmv')
WHERE    FILENAME LIKE '%SL.wmv%'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐