hi
I m new to batch file coding, I need a code to search a text file that was generated from a server, the file got information about customers contact and some parameters.File name: contacts.txt
The information looks much like belowID
123445456Other info
Tag 13
code1 2
code2 5
The above will be repeated for all the customers
What I want to do is transfer the above to other text file in one row per customer such asID tag code1 code2
123445456 13 2 5
343454545 53 6 66
...
well you can use this to extract the line numbers following the ID code
set /a count=1
for /f "skip=1 delims=[]" %%a in ('find /n "ID" contacts.txt') do set /a ID%count%=%%a + 1
rem you need something to extract the next line number from the file, working on it
for /f "skip=1 tokens=1,2 delims= " %%a in ('find /n "Tag" contacts.txt') set Tag%count%=%%b
for /f "skip=1 tokens=1,2 delims= " %%a in ('find /n "code1" contacts.txt') set Code1%count%=%%b
for /f "skip=1 tokens=1,2 delims= " %%a in ('find /n "code2" contacts.txt') set Code2%count%=%%bnow you have envvars for ID, Tag, code1 and code2, just reassemble from there
set /a count=0
for /f "tokens=1,2 delims=^=" %%a in ('SET ID') do set /a count=%count% + 1&echo ID%count% Tag%count% code1%count% code2%count%>>newfile.txtone comment, im still working on the routine that grabs just a selected line number (the result of ID%count%), so this is not fully working.. but you get the idea, right?
ok to get the the value of the line number following the ID tag, do something like this: (this only is working for one line number, so you have to do a loop to get all the values)
for /f "tokens=1,2 delims=]" %%a in ('find /v /n "" contacts.txt^|find "[7]"') do set ID%count%=%%b
so loop this for every ID%count% and you should be able to reassemble from there.
edit: so this section of code returns the next line following the ID statement. not pretty though
setlocal enabledelayedexpansion
del file3.txt
for /f "skip=2 delims=[]" %%a in ('find /n "ID" contacts.txt') do set /a ID%%a=%%a+1&echo !ID%%a!>>file3.txtfind /v /n "" contacts.txt>contacts2.txt
rem for /f "" %%a in (file3.txt) do echo %%a
for /f "" %%a in (file3.txt) do for /f "skip=2 tokens=1,2* delims=]" %%c in ('find "[%%a]" contacts2.txt') do echo ID%%a is %%d
thanks, I'm trying to run from my work PC "limited privilege", i keep getting the error " file not found - contacts.txt", do you think its something to do with the privilege.
no, execute the batch file in the folder that contains contacts.txt, else the routine will fail (as you have found) the file contacts.txt is what you mentioned in your original post, so my routine presumes that it does exist in the current directory. you can also hardcode the path for the file.
gl
| « how to edit a .jar file | Decoy login call file iss... » |