cmd-util/Utils.au3

887 lines
27 KiB
AutoIt
Raw Permalink Normal View History

2025-08-21 16:55:17 +08:00
#NoTrayIcon
#Include <File.au3>
#Include <FileConstants.au3>
#Include <Array.au3>
;Modification:
; 2016/06/19 Change /SRE Function Description.
; 2016/09/10 Add _Execute Function.
; 2016/10/27 ADD ATT/ACT operation to _CMD Function.
Func _WriteLog()
If $CMDLINE[0] < 3 Then
Local $Tips = @CRLF & "Parameters Format Error !" & @CRLF & @CRLF _
& "CMD:" & @TAB & "/LOG LogPath LogMsg [Flag = -1]" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "LogPath:" & @TAB & "Path of the file to write to." & @CRLF _
& "LogMsg:" & @TAB & @TAB & "Message to be written to the log file." & @CRLF _
& "Flag(Optional):" & @CRLF _
& @TAB & "Flag = -1 (Default) LogMsg will be written to the end of file." & @CRLF _
& @TAB & "Otherwise LogMsg will be written to beginning of file." & @CRLF & @CRLF _
& "Use /F:FileName to set the ""LogMsg"" as the contents of a file." & @CRLF & @CRLF
ConsoleWrite($Tips)
Exit 0
ElseIf $CMDLINE[0] = 3 Then
Local $LogPath = $CMDLINE[2]
Local $LogMsg = $CMDLINE[3]
Local $Flag = -1
If StringLeft($LogMsg,3) = "/F:" Then
Local $SrcName = StringTrimLeft($LogMsg, 3)
Local $SrcFile = FileOpen($SrcName)
$LogMsg = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
Else
Local $LogPath = $CMDLINE[2]
Local $LogMsg = $CMDLINE[3]
Local $Flag = $CMDLINE[4]
If StringLeft($LogMsg,3) = "/F:" Then
Local $SrcName = StringTrimLeft($LogMsg, 3)
Local $SrcFile = FileOpen($SrcName)
$LogMsg = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
EndIf
Local $RET = _FileWriteLog($LogPath, $LogMsg, $Flag)
FileOpen($LogPath, 1)
FileClose($LogPath)
Exit $RET
EndFunc
Func _DeleteLine()
Local $Tips = @CRLF & "CMD:" & @TAB & "/DEL FileName LineNum" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "File name." & @CRLF _
& "LineNum:" & @TAB & "Line number." & @CRLF & @CRLF
If $CMDLINE[0] < 3 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $File = $CMDLINE[2]
Local $Line = $CMDLINE[3]
_FileWriteToLine($File, $Line, "", True)
Exit 0
EndIf
Exit 0
EndFunc
Func _WriteLine()
If $CMDLINE[0] < 4 Then
Local $Tips = @CRLF & "Parameters Format Error !" & @CRLF & @CRLF _
& "CMD:" & @TAB & "/INS FilePath LineNum Text [OverWrite = False]" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FilePath:" & @TAB & "Path of the file to write to." & @CRLF _
& "LineNum:" & @TAB & "The line number to write to." & @CRLF _
& "Text:" & @TAB & @TAB & "The text to write." & @CRLF _
& "OverWrite(Optional):" & @CRLF _
& @TAB & "True - Will overwrite the old line." & @CRLF _
& @TAB & "False - (Default) Will not overwrite." & @CRLF & @CRLF _
& "Use /F:FileName.txt to set the ""Text"" as the contents of a file." & @CRLF & @CRLF
ConsoleWrite($Tips)
Exit 0
ElseIf $CMDLINE[0] = 4 Then
Local $FilePath = $CMDLINE[2]
Local $Line = $CMDLINE[3]
Local $Text = $CMDLINE[4]
Local $OverWrite = False
If StringLeft($Text,3) = "/F:" Then
Local $SrcName = StringTrimLeft($Text, 3)
Local $SrcFile = FileOpen($SrcName)
$Text = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
Else
Local $FilePath = $CMDLINE[2]
Local $Line = $CMDLINE[3]
Local $Text = $CMDLINE[4]
$OverWrite = $CMDLINE[5]
If StringLeft($Text,3) = "/F:" Then
Local $SrcName = StringTrimLeft($Text, 3)
Local $SrcFile = FileOpen($SrcName)
$Text = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
EndIf
Local $RET = _FileWriteToLine ( $FilePath, $Line, $Text, $OverWrite )
Exit $RET
EndFunc
Func _ReplaceString()
If $CMDLINE[0] < 4 Then
Local $Tips = @CRLF & "Parameters Format Error !" & @CRLF & @CRLF _
& "CMD:" & @TAB & "/REP FileName SrcString DstString [Case = 0] [Occurance = 1]" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Full path of the file." & @CRLF _
& "SrcString:" & @TAB & "The string to evaluate." & @CRLF _
& "DstString:" & @TAB & "The text to write." & @CRLF _
& "Case(Optional):" & @CRLF _
& @TAB & "0 -- (Default) Not case sensitive." & @CRLF _
& @TAB & "1 -- Case sensitive." & @CRLF _
& "Occurance(Optional):" & @CRLF _
& @TAB & "0 -- Only the first occurrence is replaced." & @CRLF _
& @TAB & "1 -- (Default) All occurrences are replaced." & @CRLF & @CRLF _
& "Use /F:FileName to set ""SrcString"" and ""DstString"" as the contents of a file." & @CRLF & @CRLF
ConsoleWrite($Tips)
Exit 0
ElseIf $CMDLINE[0] = 4 Then
Local $Path = $CMDLINE[2]
Local $SrcStr = $CMDLINE[3]
Local $DstStr = $CMDLINE[4]
Local $Case = 0
Local $Occur = 1
If StringLeft($SrcStr, 3) = "/F:" Then
Local $SrcName = StringTrimLeft($SrcStr, 3)
Local $SrcFile = FileOpen($SrcName)
$SrcStr = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
If StringLeft($DstStr, 3) = "/F:" Then
Local $SrcName1 = StringTrimLeft($DstStr, 3)
Local $SrcFile1 = FileOpen($SrcName1)
$DstStr = FileRead($SrcFile1)
FileClose($SrcFile1)
EndIf
ElseIf $CMDLINE[0] = 5 Then
Local $Path = $CMDLINE[2]
Local $SrcStr = $CMDLINE[3]
Local $DstStr = $CMDLINE[4]
Local $Case = $CMDLINE[5]
Local $Occur = 1
If StringLeft($SrcStr, 3) = "/F:" Then
Local $SrcName = StringTrimLeft($SrcStr, 3)
Local $SrcFile = FileOpen($SrcName)
$SrcStr = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
If StringLeft($DstStr, 3) = "/F:" Then
Local $SrcName1 = StringTrimLeft($DstStr, 3)
Local $SrcFile1 = FileOpen($SrcName1)
$DstStr = FileRead($SrcFile1)
FileClose($SrcFile1)
EndIf
Else
Local $Path = $CMDLINE[2]
Local $SrcStr = $CMDLINE[3]
Local $DstStr = $CMDLINE[4]
Local $Case = $CMDLINE[5]
Local $Occur = $CMDLINE[6]
If StringLeft($SrcStr, 3) = "/F:" Then
Local $SrcName = StringTrimLeft($SrcStr, 3)
Local $SrcFile = FileOpen($SrcName)
$SrcStr = FileRead($SrcFile)
FileClose($SrcFile)
EndIf
If StringLeft($DstStr, 3) = "/F:" Then
Local $SrcName1 = StringTrimLeft($DstStr, 3)
Local $SrcFile1 = FileOpen($SrcName1)
$DstStr = FileRead($SrcFile1)
FileClose($SrcFile1)
EndIf
EndIf
Local $RET = _ReplaceStringInFile ( $Path, $SrcStr, $DstStr, $Case, $Occur )
ConsoleWrite("Return Code: " & $RET & @CRLF)
Exit 0
EndFunc
Func _LineNum()
Global $Tips_Lin = @CRLF & "CMD:" & @TAB & "/NUM FileName [String] [Case=N]" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename of the file to search for." & @CRLF _
& "String:" & @TAB & @TAB & "[Optional] The string to search in the file." & @CRLF _
& @TAB & @TAB & "If not define ""String"", return the count of lines of the file" & @CRLF _
& "Case:" & @TAB & @TAB & "Flag to indicate if the operations should be case sensitive. Y/N." & @CRLF & @CRLF
Switch $CMDLINE[0]
Case 1
ConsoleWrite($Tips_Lin)
Exit 0
Case 2
If $CMDLINE[2] = "/?" Then
ConsoleWrite($Tips_Lin)
Exit 0
Else
Local $File = $CMDLINE[2]
;Local $String = ''
Local $CaseSense = 0
EndIf
Case 3
Local $File = $CMDLINE[2]
Local $String = $CMDLINE[3]
Local $CaseSense = 0
Case Else
Local $File = $CMDLINE[2]
Local $String = $CMDLINE[3]
Local $CaseSense = $CMDLINE[4]
If $CaseSense = "Y" Then
$CaseSense = 1
ElseIf $CaseSense = "N" Then
$CaseSense = 0
Else
$CaseSense = 0
EndIf
EndSwitch
If Not IsDeclared("String") Then
Local $RET = _FileCountLines ($File)
ConsoleWrite($RET&@CRLF)
Exit $RET
Else
;Local $Array = ""
;_FileReadToArray($File, $Array)
;Local $Index = _ArrayFindAll($Array, $String, 0, 0, 0, 1)
;Local $Count = StringLen(_ArrayToString($Index, ''))
Local $Ocurrences = 0
Local $fOpen = FileOpen($File,0)
Local $Lines = _FileCountLines($File)
$Lines = $Lines + 1
Local $LineArray[$Lines]
Local $StringArray[$Lines]
ConsoleWrite("-->File: " & $File & @CRLF)
ConsoleWrite("-->String: " & $String & @CRLF)
For $Loop1 = 1 To $Lines Step 1
Local $fString = FileReadLine($fOpen, $Loop1)
If StringInStr($fString, $String, $CaseSense) > 0 Then
$Ocurrences += 1
$LineArray[$Ocurrences] = $Loop1
$StringArray[$Ocurrences] = $fString
EndIf
Next
ConsoleWrite("-->Ocurrence: " & $Ocurrences & @CRLF)
For $Loop2 = 1 To $Ocurrences Step 1
ConsoleWrite($LineArray[$Loop2] & @TAB & $StringArray[$Loop2] & @CRLF)
Next
FileClose($fOpen)
Exit 0
EndIf
EndFunc
Func _GetLine()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FRL FileName LineNum" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF _
& "LineNum:" & @TAB & "Number of line to read." & @CRLF _
& @TAB & "Use -[Number] to read the file from the end, etc -8" & @CRLF _
& @TAB & "Use [Number1]-[Number2] to read line Number1 to line Number2, etc 2-5" & @CRLF
Switch $CMDLINE[0]
Case 1 To 2
ConsoleWrite($Tips)
Exit 0
Case 3
Local $File = $CMDLINE[2]
Local $Line = $CMDLINE[3]
Case Else
Local $File = $CMDLINE[2]
Local $Line = $CMDLINE[3]
EndSwitch
Local $Lines = _FileCountLines($File)
If $Line > $Lines Then
ConsoleWrite("Error: Parameter ""Line"" out of range." & @CRLF)
Exit 255
ElseIf StringLeft($Line, 1) = "-" Then
$Line = Int(StringTrimLeft($Line, 1))
$Line = $Lines - $Line + 1
Local $fOpen = FileOpen($File)
Local $RET = FileReadLine($fOpen, $Line)
ConsoleWrite($RET&@CRLF)
Exit 0
ElseIf StringInStr($Line, "-") <> 0 And StringLeft($Line, 1) <> "-" Then
$Line = StringSplit($Line, "-")
If IsArray($Line) Then
Local $Line_Start = $Line[1]
Local $Line_End = $Line[2]
For $i = $Line_Start To $Line_End Step 1
Local $fOpen = FileOpen($File)
Local $RET = FileReadLine($fOpen, $i)
ConsoleWrite($RET&@CRLF)
If $i <> $Line_End Then ConsoleWrite(@CRLF)
Next
Exit 0
EndIf
Else
Local $fOpen = FileOpen($File)
Local $RET = FileReadLine($fOpen, $Line)
ConsoleWrite($RET&@CRLF)
Exit 0
EndIf
Exit 0
EndFunc
Func _CountLine()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FCL FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $RET = _FileCountLines( $sFilePath )
ConsoleWrite($RET &@CRLF)
Exit 0
EndIf
EndFunc
Func _GetAttrib()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FGA FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF _
& "Return Code:" & @CRLF _
& "A code string representing a file's attributes." & @CRLF _
& " R = READONLY" & @CRLF _
& " A = ARCHIVE" & @CRLF _
& " S = SYSTEM" & @CRLF _
& " H = HIDDEN" & @CRLF _
& " N = NORMAL" & @CRLF _
& " D = DIRECTORY" & @CRLF _
& " O = OFFLINE" & @CRLF _
& " C = COMPRESSED (NTFS Compression, Not ZIP Compression)" & @CRLF _
& " T = TEMPORARY" & @CRLF _
& " X = EFS ENCRYPTION" & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $RET = FileGetAttrib( $sFilePath )
ConsoleWrite($RET&@CRLF)
Exit 0
EndIf
EndFunc
Func _SetAttrib()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FSA FileName ""+-RASHNOT"" " & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "The path of the file(s) to set, (* and ? wildcards accepted)" & @CRLF _
& "+-RASHNOT:" & @TAB & "Attribute(s) to set/clear. e.g. ""+A"", ""+RA-SH"""& @CRLF _
& " A = ARCHIVE" & @CRLF _
& " S = SYSTEM" & @CRLF _
& " H = HIDDEN" & @CRLF _
& " N = NORMAL" & @CRLF _
& " O = OFFLINE" & @CRLF _
& " R = READONLY" & @CRLF _
& " T = TEMPORARY" & @CRLF & @CRLF
If $CMDLINE[0] < 3 Then
ConsoleWrite( $Tips )
Exit 0
Else
Local $FileSet = $CMDLINE[2]
Local $Att = $CMDLINE[3]
Local $RET = FileSetAttrib( $FileSet, $Att )
If $RET = 1 Then
ConsoleWrite("Success")
Exit 0
Else
ConsoleWrite("Error")
Exit 0
EndIf
EndIf
EndFunc
Func _GetEncoding()
Local $Tips = @CRLF & "CMD:" & @TAB & "/ENC FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $ENC = FileGetEncoding( $sFilePath )
Switch $ENC
Case $FO_UTF16_LE
Local $RET = "UTF16 Little Endian"
Case $FO_UTF16_BE
Local $RET = "UTF16 Big Endian"
Case $FO_UTF8
Local $RET = "UTF8 With BOM"
Case $FO_UTF8_NOBOM
Local $RET = "UTF8 Without BOM"
Case $FO_ANSI
Local $RET = "ANSI"
Case Else
Local $RET = "ERROR"
EndSwitch
ConsoleWrite($RET&@CRLF)
Exit 0
EndIf
EndFunc
Func _GetSize()
Local $Tips = @CRLF & "CMD:" & @TAB & "/SIZ FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $Size = FileGetSize( $sFilePath )
If $Size <= 1024 Then
ConsoleWrite($Size & " Bytes")
Exit 0
ElseIf $Size <= 1048576 Then
Local $RET = Int($Size/1024)
ConsoleWrite($RET & " KB")
Exit 0
Else
Local $RET = Int($Size/1048576)
ConsoleWrite($RET & " MB")
Exit 0
EndIf
EndIf
EndFunc
Func _GetTime()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FGT FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $ModifiedTime = FileGetTime( $sFilePath, $FT_MODIFIED, $FT_STRING )
Local $CreatedTime = FileGetTime( $sFilePath, $FT_CREATED, $FT_STRING )
Local $AccessedTime = FileGetTime( $sFilePath, $FT_ACCESSED, $FT_STRING )
Local $RET = "CreatedTime: " & @TAB & $CreatedTime & @CRLF _
& "LastModified: " & @TAB & $ModifiedTime & @CRLF _
& "LastAccessed: " & @TAB & $AccessedTime & @CRLF
ConsoleWrite($RET&@CRLF)
Exit 0
EndIf
EndFunc
Func _FileSetTime()
Local $Tips = @CRLF & "CMD:" & @TAB & "/FST FileName Time Type" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF _
& "Time:" & @TAB & @TAB & "The new time to set in the format ""YYYYMMDDHHMMSS""" & @CRLF _
& @TAB & @TAB & "If the time is blank then the current time is used." & @CRLF _
& "Type:" & @TAB & @TAB & "MODIFIED, CREATED, ACCESSED." & @CRLF & @CRLF
If $CMDLINE[0] < 4 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $FileSet = $CMDLINE[2]
Local $Time = $CMDLINE[3]
Local $Type = $CMDLINE[4]
Switch $Type
Case "MODIFIED"
$Type = $FT_MODIFIED
Case "CREATED"
$Type = $FT_CREATED
Case "ACCESSED"
$Type = $FT_ACCESSED
Case Else
ConsoleWrite("Parameters Error." & @CRLF)
Exit 0
EndSwitch
Local $RET = FileSetTime( $FileSet, $Time, $Type )
If $RET = 1 Then
ConsoleWrite("Successed" &@CRLF)
Exit 0
Else
ConsoleWrite("Failed" &@CRLF)
Exit 0
EndIf
EndIf
EndFunc
Func _GetVersion()
Local $Tips = @CRLF & "CMD:" & @TAB & "/VER FileName" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $FILEVERSION = FileGetVersion( $sFilePath, $FV_FILEVERSION )
Local $FILEDESCRIPTION = FileGetVersion( $sFilePath, $FV_FILEDESCRIPTION )
Local $COMMENTS = FileGetVersion( $sFilePath, $FV_COMMENTS )
Local $INTERNALNAME = FileGetVersion( $sFilePath, $FV_INTERNALNAME )
Local $COMPANYNAME = FileGetVersion( $sFilePath, $FV_COMPANYNAME )
Local $LEGALCOPYRIGHT = FileGetVersion( $sFilePath, $FV_LEGALCOPYRIGHT )
Local $LEGALTRADEMARKS = FileGetVersion( $sFilePath, $FV_LEGALTRADEMARKS )
Local $ORIGINALFILENAME = FileGetVersion( $sFilePath, $FV_ORIGINALFILENAME )
Local $PRODUCTNAME = FileGetVersion( $sFilePath, $FV_PRODUCTNAME )
Local $PRODUCTVERSION = FileGetVersion( $sFilePath, $FV_PRODUCTVERSION )
Local $RET = "FileName: " & $sFilePath & @CRLF _
& "----- Version Information -----" & @CRLF _
& "File_Version:" & @TAB & @TAB & $FILEVERSION & @CRLF _
& "File_Description:" & @TAB & $FILEDESCRIPTION & @CRLF _
& "Comments:" & @TAB & @TAB & $COMMENTS & @CRLF _
& "Internal_Name:" & @TAB & @TAB & $INTERNALNAME & @CRLF _
& "Company_Name:" & @TAB & @TAB & $COMPANYNAME & @CRLF _
& "Legal_Copyright:" & @TAB & $LEGALCOPYRIGHT & @CRLF _
& "Legal_Trademarks:" & @TAB & $LEGALTRADEMARKS & @CRLF _
& "Original_File_Name:" & @TAB & $ORIGINALFILENAME & @CRLF _
& "Product_Name:" & @TAB & @TAB & $PRODUCTNAME & @CRLF _
& "Product_Version:" & @TAB & $PRODUCTVERSION & @CRLF
ConsoleWrite($RET&@CRLF)
Exit 0
EndIf
EndFunc
Func _Read()
Local $Tips = @CRLF & "CMD:" & @TAB & "/RED FileName [Count]" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename." & @CRLF _
& "Count:" &@TAB&@TAB& "A number of characters to read in the file." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite( $Tips )
Exit 0
ElseIf $CMDLINE[0] = 2 Then
Local $sFilePath = $CMDLINE[2]
Local $RET = FileRead( $sFilePath )
ConsoleWrite( $RET )
Exit 0
Else
Local $sFilePath = $CMDLINE[2]
Local $Count = $CMDLINE[3]
Local $RET = FileRead( $sFilePath, $Count )
ConsoleWrite( $RET )
Exit 0
EndIf
EndFunc
;Func _FileSRER2Line($File, $pattern = '', $replace = '', $flag = 1, $SRE = 0, $CR = 1, $Write = '')
Func _FileSRER2Line()
Global $Tips_SRE = @CRLF & "CMD:" & @TAB & "/SRE FileName Pattern Replace Flag=1 SRE=1 CR=1 Write" & @CRLF & @CRLF _
& "Parameters:" & @CRLF _
& "FileName:" & @TAB & "Path and filename of the file to modify." & @CRLF _
& "Pattern:" & @TAB & "String to search for. If NULL, delete all blank lines." & @CRLF _
& "Replace:" & @TAB & "String to write. If NULL, delete the lines contain ""Pattern""." & @CRLF _
& "Flag:" _
& @TAB & @TAB & "Flag=1: Line must meet the ""Pattern""." & @CRLF _
& @TAB & @TAB & "Flag=0: Line contain the ""Pattern""." & @CRLF _
& "SRE:" _
& @TAB & @TAB & "SRE=1: Use regular expressions." & @CRLF _
& @TAB & @TAB & "SRE=0: Not use regular expressions." & @CRLF _
& "CR:" _
& @TAB & @TAB & "CR=1: Recognition @CRLF(Default)." & @CRLF _
& @TAB & @TAB & "CR=0: Recognition @LF." & @CRLF _
& "Write:" _
& @TAB & @TAB & "NULL: Write the source file." & @CRLF _
& @TAB & @TAB & "Not NULL: Write the specified file." & @CRLF & @CRLF
; & @TAB & @TAB & "0: Echo only, not write." & @CRLF _
Switch $CMDLINE[0]
Case 1
ConsoleWrite($Tips_SRE)
Exit 0
Case 2
If $CMDLINE[2] = "/?" Then
ConsoleWrite($Tips_SRE)
Exit 0
Else
Local $File = $CMDLINE[2]
Local $pattern = ''
Local $replace = ''
Local $flag = 1
Local $SRE = 0
Local $CR = 1
Local $Write = ''
EndIf
Case 3
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = ''
Local $flag = 1
Local $SRE = 0
Local $CR = 1
Local $Write = ''
Case 4
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = 1
Local $SRE = 0
Local $CR = 1
Local $Write = ''
Case 5
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = $CMDLINE[5]
Local $SRE = 0
Local $CR = 1
Local $Write = ''
Case 6
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = $CMDLINE[5]
Local $SRE = $CMDLINE[6]
Local $CR = 1
Local $Write = ''
Case 7
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = $CMDLINE[5]
Local $SRE = $CMDLINE[6]
Local $CR = $CMDLINE[7]
Local $Write = ''
Case 8
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = $CMDLINE[5]
Local $SRE = $CMDLINE[6]
Local $CR = $CMDLINE[7]
Local $Write = $CMDLINE[8]
Case Else
Local $File = $CMDLINE[2]
Local $pattern = $CMDLINE[3]
Local $replace = $CMDLINE[4]
Local $flag = $CMDLINE[5]
Local $SRE = $CMDLINE[6]
Local $CR = $CMDLINE[7]
Local $Write = $CMDLINE[8]
EndSwitch
Local $sFile = String(FileRead($File)), $strqhz = '', $extended = 0, $sRER, $strZY, $CRF = ''
If $CR = 0 Then $CRF = '?'
If $pattern = '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, '\r' & $CRF & '\n(?=\r' & $CRF & '\n)|\r' & $CRF & '\n$', '')
Else
If $SRE = 0 Then
$strZY = '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)'
$pattern = StringRegExpReplace($pattern, $strZY, '\\$1')
$replace = StringRegExpReplace($replace, $strZY, '\\$1')
EndIf
If $flag = 0 Then $strqhz = '\V*'
Local $patternWZ = $strqhz & $pattern & $strqhz
$pattern = '(\r' & $CRF & '\n)' & $patternWZ & '(?=\r' & $CRF & '\n)|\r' & $CRF & '\n' & $patternWZ & '$'
If $replace <> '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '${1}' & $replace)
Else
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '')
EndIf
EndIf
$extended = $extended + @extended
$sRER = StringRegExpReplace($sRER, '^\r' & $CRF & '\n', '')
If $Write = '' And $Write <> '0' Then
$sTmp = FileOpen($File, 2)
FileWrite($sTmp, $sRER)
FileClose($sTmp)
ElseIf $Write <> '' Then
$sTmp = FileOpen($Write, 2)
FileWrite($sTmp, $sRER)
FileClose($sTmp)
EndIf
SetExtended($extended)
ConsoleWrite("Return Code: " & @extended & @CRLF)
Return $sRER
Exit 0
EndFunc ;==>_FileSRER2Line
;============================== Misc Item ==============================
Func _Sleep()
Local $Tips = @CRLF & "CMD:" & @TAB & "/SLP Delay" & @CRLF _
& "Usage:" & @TAB & "Pause execution for a while." & @CRLF _
& "Parameters:" & @CRLF _
& "Delay: Amount of time to pause (in milliseconds)." & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
EndIf
Sleep($CMDLINE[2])
Exit 0
EndFunc
Func _Beep()
Local $Tips = @CRLF & "CMD:" & @TAB & "/BEP [Frequency=500] [Duration=1000]" & @CRLF _
& "Usage:" & @TAB & "Play back a beep to the user." & @CRLF _
& "Parameters:" & @CRLF _
& "Frequency:" & @TAB & "The frequency of the beep in hertz. 37~32767 (0x25~0x7FFF)." & @CRLF _
& "Duration:" & @TAB & "The length of the beep in milliseconds." & @CRLF
Local $Frequency = 500
Local $Duration = 1000
If $CMDLINE[0] >= 2 Then
If $CMDLINE[2] = "/?" Then
ConsoleWrite($Tips)
Exit 0
Else
$Frequency = $CMDLINE[2]
EndIf
EndIf
If $CMDLINE[0] >= 3 Then $Duration = $CMDLINE[3]
Beep($Frequency, $Duration)
Exit 0
EndFunc
Func _Random()
Local $Tips = @CRLF & "CMD:" & @TAB & "/RND Min Max" & @CRLF _
& "Usage:" & @TAB & "Generate a pseudo-random integer-type number." & @CRLF _
& "Parameters:" & @CRLF _
& "Min The smallest number to be generated. (Default=0.)" & @CRLF _
& "Max The largest number to be generated. (Default=1.)" & @CRLF
Local $Min = 0
Local $Max = 1
Local $Flag = 1
If $CMDLINE[0] >= 2 Then
If $CMDLINE[2] = "/?" Then
ConsoleWrite($Tips)
Exit 0
Else
$Min = $CMDLINE[2]
EndIf
EndIf
If $CMDLINE[0] >= 3 Then $Max = $CMDLINE[3]
Local $RET = Random($Min, $Max, $Flag)
ConsoleWrite($RET&@CRLF)
Exit($RET)
EndFunc
Func _CMD()
Local $Tips = @CRLF & "CMD:" & @TAB & "/CMD State" & @CRLF _
& "Usage:" & @TAB & "Change state of current console window." & @CRLF & @CRLF _
& "State:" & @CRLF _
& @TAB & "ATT: Activate console window." & @CRLF _
& @TAB & "ACT: Check if console window is actived." & @CRLF _
& @TAB & "DIS: Disable console window." & @CRLF _
& @TAB & "ENA: Enable console window." & @CRLF _
& @TAB & "MIN: Minimize console window." & @CRLF _
& @TAB & "MAX: Maximize console window." & @CRLF _
& @TAB & "RES: Restore console window.(Undo MIN/MAX)" & @CRLF _
& @TAB & "NOR: Activate and display console window." & @CRLF _
& @TAB & "HIDE: Hide console window." & @CRLF _
& @TAB & "SHOW: Show console window." & @CRLF _
& @TAB & "TOP 1: Set console windows always on top." & @CRLF _
& @TAB & "TOP 0: Set console windows NOT always on top." & @CRLF
; & @TAB & "LOCK: Lock Console Window." & @CRLF _
; & @TAB & "FREE: Unlock Console Window." & @CRLF
Local $hWnd = DllCall("kernel32", "ptr", "GetConsoleWindow")
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
EndIf
Local $iState
Switch $CMDLINE[2]
Case "/?"
ConsoleWrite($Tips)
Exit 0
Case "MIN"
$iState = @SW_MINIMIZE
Case "MAX"
$iState = @SW_MAXIMIZE
Case "RES"
$iState = @SW_RESTORE
Case "HIDE"
$iState = @SW_HIDE
Case "SHOW"
$iState = @SW_SHOW
Case "DIS"
$iState = @SW_DISABLE
Case "ENA"
$iState = @SW_ENABLE
Case "LOCK"
$iState = @SW_LOCK
Case "FREE"
$iState = @SW_UNLOCK
Case "NOR"
$iState = @SW_SHOWNORMAL
Case "ATT"
WinActivate($hWnd[0])
Exit 0
Case "ACT"
Local $RET = WinActive($hWnd[0])
ConsoleWrite("Result: " & $RET & @CRLF)
Exit 0
Case "TOP"
Local $Flag = 0
If $CMDLINE[0] >= 3 Then $Flag = $CMDLINE[3]
WinActivate($hWnd[0])
WinSetOnTop($hWnd[0], "", $Flag)
Exit 0
Case Else
ConsoleWrite("Parameters Error." & @CRLF)
Exit 0
EndSwitch
WinSetState($hWnd[0], "", $iState)
Exit 0
EndFunc
Func _Execute()
Local $Tips = @CRLF & "CMD:" & @TAB & "/EXT Expression" & @CRLF _
& "Usage:" & @TAB & "Execute an expression." & @CRLF & @CRLF
If $CMDLINE[0] < 2 Then
ConsoleWrite($Tips)
Exit 0
Else
If $CMDLINE[2] = "/?" Then
ConsoleWrite($Tips)
Exit 0
EndIf
EndIf
Local $EXP = $CMDLINE[2]
Local $RET = Execute($EXP)
ConsoleWrite($RET & @CRLF)
Exit 0
EndFunc
;============================== Misc Item ==============================
#CS ------------------------------
Func _Usage()
Local $Info = @CRLF & "V1.1 By Wayne Tan (2016.06.18)" & @CRLF & @CRLF _
& "Command:" & @CRLF _
& "/INS: Insert text to a specific line in a file." & @CRLF _
& "/DEL: Delete the specified line in a file." & @CRLF _
& "/REP: Replace a substring in a file." & @CRLF _
& "/NUM: Return the number of lines (with specified sting) of a specified file." & @CRLF _
& "/FRL: Return the text of the specified line in a specified text file." & @CRLF _
& "/FCL: Return the count of lines in the specified file." & @CRLF _
& "/FGA: Return a code string representing a file's attributes." & @CRLF _
& "/FSA: Set the attributes of one or more files/directories." & @CRLF _
& "/FGT: Return the time and date information for a file." & @CRLF _
& "/FST: Set the timestamp of one of more files." & @CRLF _
& "/ENC: Determine the text encoding used in a file." & @CRLF _
& "/RED: Read a number of characters from a file." & @CRLF _
& "/SIZ: Return the size of a file." & @CRLF _
& "/VER: Return version information stored in a file." & @CRLF _
& "/SRE: Delete(or replace) the lines by the specified string.(RegExp)" & @CRLF _
& "/LOG: Write current date, time and the specified text to a log file." & @CRLF & @CRLF _
& "Type Command to see the detail information." & @CRLF & @CRLF
ConsoleWrite($Info)
Exit 0
EndFunc
#CE ------------------------------