coles Posted March 16, 2016 Posted March 16, 2016 Hi guys i am looking for any help with a .bat file i am working on. I am trying to extract few info from a file and dump into a text file (which i am able to do) i am stuck at the part of deleting few text from the output file. FINDSTR "\<vehicle>" c:\temp\1.xml >> result.txt which outputs the result as <vehicle>100</vehicle>. how can i delete <vehicle></vehicle> so that just 100 remains in the new file or new dump file i was trying FINDSTR /v <vehicle> c:\temp\result.txt >> fleet.txt which is not working any help will be really great full Thank you jincy 1
Exit Posted March 16, 2016 Posted March 16, 2016 StringBetween() ??? coles 1 App: Au3toCmd UDF: _SingleScript()
Trong Posted March 17, 2016 Posted March 17, 2016 (edited) You want to remove it using a bat file or perform with autoit? If you take on AutoIt: 1. Extract the contents of <vehicle> and </vehicle> using StringBetween(). #include <String.au3> #include <FileConstants.au3> Local $NewContent Local $aContent = FileReadToArray("result.txt") For $i = 0 To UBound($aContent) - 1 $NewContent &= _StringBetween($aContent[$i], "<vehicle>", "</vehicle>") & @CRLF) Next Local $hOpen = FileOpen("result.txt", $FO_OVERWRITE + $FO_CREATEPATH + $FO_ANSI) FileWrite($hOpen, $NewContent) FileClose($hOpen) 2. Remove <vehicle> and </vehicle> you can use StringReplace() or StringLeft/StringRight/StringTrimLeft/StringTrimRight. #include <FileConstants.au3> Local $NewContent = FileRead("result.txt") $NewContent = StringReplace($NewContent, "<vehicle>", "") $NewContent = StringReplace($NewContent, "</vehicle>", "") Local $hOpen = FileOpen("result.txt", $FO_OVERWRITE + $FO_CREATEPATH + $FO_ANSI) FileWrite($hOpen, $NewContent) FileClose($hOpen) 3. If you want to create a program to use with BAT command: SearchAndRepace.exe "FileContent.txt" "Strign to Search" "String to Replace" #Region #AutoIt3Wrapper_Change2CUI=y #EndRegion Local $NewContent, $OldContent, $cTMP = "" If $CMDLine[0] >= 2 Then $OldContent = FileRead($CMDLine[1]) If $CMDLine[0] > 2 Then $cTMP = $CMDLine[3] $NewContent = StringReplace($OldContent, $CMDLine[2], $cTMP) FileDelete($CMDLine[1]) FileWrite($CMDLine[1], $NewContent) ConsoleWrite("Search:" & $CMDLine[2] & "Replace:" & $cTMP & @CRLF & "Repace On File:" & & @CRLF & $CMDLine[1] & @CRLF) Else ConsoleWrite('Usage: "' & @ScriptName & '"FileToSearchAndRepaceContent' & '" ' & '"StringToSearch' '" ' & '"StringToReplace' & '"' & @CRLF) EndIf Edited March 19, 2016 by Trong <vehicle> ==> </vehicle> Regards,
coles Posted March 17, 2016 Author Posted March 17, 2016 (edited) 17 hours ago, Trong said: You want to remove it using a bat file or perform with autoit? If you take on AutoIt: 1. Extract the contents of <vehicle> and </vehicle> using StringBetween(). #include <String.au3> #include <FileConstants.au3> Local $NewContent Local $aContent = FileReadToArray("result.txt") For $i = 0 To UBound($aContent) - 1 $NewContent &= _StringBetween($aContent[$i], "<vehicle>", "</vehicle>") & @CRLF) Next Local $hOpen = FileOpen("result.txt", $FO_OVERWRITE + $FO_CREATEPATH + $FO_ANSI) FileWrite($hOpen, $NewContent) FileClose($hOpen) 2. Remove <vehicle> and </vehicle> you can use StringReplace() or StringLeft/StringRight/StringTrimLeft/StringTrimRight. #include <FileConstants.au3> Local $NewContent = FileRead("result.txt") $NewContent = StringReplace($NewContent, "<vehicle>", "") $NewContent = StringReplace($NewContent, "<vehicle>", "") Local $hOpen = FileOpen("result.txt", $FO_OVERWRITE + $FO_CREATEPATH + $FO_ANSI) FileWrite($hOpen, $NewContent) FileClose($hOpen) 3. If you want to create a program to use with BAT command: SearchAndRepace.exe "FileContent.txt" "Strign to Search" "String to Replace" #Region #AutoIt3Wrapper_Change2CUI=y #EndRegion Local $NewContent, $OldContent, $cTMP = "" If $CMDLine[0] >= 2 Then $OldContent = FileRead($CMDLine[1]) If $CMDLine[0] > 2 Then $cTMP = $CMDLine[3] $NewContent = StringReplace($OldContent, $CMDLine[2], $cTMP) FileDelete($CMDLine[1]) FileWrite($CMDLine[1], $NewContent) ConsoleWrite("Search:" & $CMDLine[2] & "Replace:" & $cTMP & @CRLF & "Repace On File:" & & @CRLF & $CMDLine[1] & @CRLF) Else ConsoleWrite('Usage: "' & @ScriptName & '"FileToSearchAndRepaceContent' & '" ' & '"StringToSearch' '" ' & '"StringToReplace' & '"' & @CRLF) EndIf Thanks @Trong, you have no idea how much helpful it was. Edited March 17, 2016 by coles
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now