統計文件信息及生成SQL語句(VBS)實例

查詢文件名(帶日期及大小)_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%'



 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章