coles Posted March 16, 2016 Share 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 Link to comment Share on other sites More sharing options...
Exit Posted March 16, 2016 Share Posted March 16, 2016 StringBetween() ??? coles 1 App: Au3toCmd UDF: _SingleScript() Link to comment Share on other sites More sharing options...
Trong Posted March 17, 2016 Share 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, Link to comment Share on other sites More sharing options...
coles Posted March 17, 2016 Author Share 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 Link to comment Share on other sites More sharing options...
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