windows-nt/Source/XPSP1/NT/tools/hashrep.vbs
2020-09-26 16:20:57 +08:00

111 lines
3.5 KiB
Plaintext

'Fhash is a file containing the line we
'want to replace form ?_hash.txt. NHash is
'the hash to replace it.
DIM FSO,HashTextFileName,HashTextFile,HashTextFileLine,MyVar,FirstArg
DIM HashTextFileOutName,HashTextFileOut,HashTextFileOutLine
DIM NHash,FHashFileName,NHashFileName,FHashFile,NHashFile,FHashText,NHashText,Ptr,SystemCommand
Set FSO=CreateObject("Scripting.FileSystemObject")
'Check for help
FirstArg=Wscript.Arguments(0)
If FirstArg="/?" then
Usage
End if
If FirstArg="-?" then
Usage
End if
If FirstArg="?" then
Usage
End if
FHashFileName=FirstArg
NHashFileName=Wscript.Arguments(1)
HashTextFileName=Wscript.Arguments(2)
If not FSO.FileExists (FHashFileName) then
Wscript.Stdout.Writeline("Cannot find" & FHashFileName)
WScript.Quit(1)
End If
If not FSO.FileExists (NHashFileName) then
Wscript.Stdout.Writeline("Cannot find" & NHashFileName)
WScript.Quit(1)
End If
If not FSO.FileExists (HashTextFileName) then
Wscript.Stdout.Writeline("Cannot find" & HashTextFileName)
WScript.Quit(1)
End If
Set FHashFile=FSO.GetFile(FHashFileName)
Set NHashFile=FSO.GetFile(NHashFileName)
Set FHashText=FHashFile.OpenAsTextStream()
Set NHashText=NHashFile.OpenAsTextStream()
'Get the filename
While not FHashText.AtEndOfStream '& not done
FHashLine=FHashText.Readline
' now we have the line from FHash.tmp
' we need to parse out the path\filename and the hash
Ptr = Instr(FHashLine,"=")
FilePath = Left(FHashLine,Ptr)
' if Ptr > 0 then
' done=true
' FilePath = Left(FHashLine,Ptr)
' end if
Wend
'Now get the new hash
While not NHashText.AtEndOfStream
NHashLine=NHashText.Readline
NHash=NHashLine
Wend
Set HashTextFile=FSO.GetFile(HashTextFileName)
Set HashTextFileText=HashTextFile.OpenAsTextStream()
Ptr=InStr(HashTextFileName,".")
HashTextFileOutName=Left(HashTextFileName,Ptr)
HashTextFileOutName=HashTextFileOutName&"tmp"
if FSO.FileExists (HashTextFileOutName) then
FSO.DeleteFile(HashTextFileOutName)
End If
Set HashTextFileOutText=FSO.CreateTextFile(HashTextFileOutName)
While not HashTextFileText.AtEndOfStream
HashTextFileLine=HashTextFileText.Readline
' now we need to check if the line begins with our name
' if it doesn't, just append to the tmp file
' if it does, replace the line with the new one.
Ptr=InStr(HashTextFileLine,"=")
if Left(HashTextFileLine,Ptr)=FilePath then
' do our replacement here
HashTextFileOutText.Writeline FilePath & NHash
else
' do our append here
HashTextFileOutText.Writeline HashTextFileLine
End If
Wend
' now rename the tmp file to the txt file.
' system call is easiest here.
Set ShellObj = CreateObject("WScript.Shell")
myVar="mv " & HashTextFileOutName & " " & HashTextFileName
Call ShellObj.Run(myVar)
Sub Usage()
Wscript.stdout.writeline("")
Wscript.stdout.writeline("Hashrep.vbs: Replaces the hash of file you are updating in ?_hash.txt")
Wscript.stdout.writeline(" with the file's new hash, to be used for future backprops.")
Wscript.stdout.writeline("")
Wscript.stdout.writeline("Syntax:")
Wscript.stdout.writeline("")
Wscript.stdout.writeline(" Hashrep.vbs %TMP%\Fhash.tmp %TMP%\Nhash.tmp %BINARIES%\dump\cathash\?_Hash.txt")
Wscript.stdout.writeline("")
Wscript.stdout.writeline(" Fhash.tmp: Conatins the file path and its old hash")
Wscript.stdout.writeline(" Nhash.tmp: Conatins the file's new hash")
Wscript.stdout.writeline(" ?_Hash.txt: Conatins all of ?.cat's hash's and there associated file names.")
Wscript.stdout.writeline("")
Wscript.stdout.writeline("This script is called by %BLDTOOLS%\updtcat.cmd")
Wscript.Quit(0)
End Sub