How can I search through a file to check to see if there are two lines that start with the same characters?

Member_2_5306354
Member_2_5306354 used Ask the Experts™
on
At a command line in Windows, I want to search through a specific file and if it finds 2 instances of a line beginning with the same alphacharacters, then it needs to run a a specific vbs script.

For instance, in file located at c:\info\input.txt
Searching through the file,
If there are two lines in succession which start with DTM*, then it needs to run a cscript of 2.vbs, however if it finds
only 1 line starting with DTM* on it's own, then it needs to run 1.vbs.

What command line commands can I use to accomplish this?
Thanks.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Most Valuable Expert 2018
Distinguished Expert 2018

Commented:
This should do it; it's in test mode and will only display the csript commands; adjust lines 15 and 17 to your likings once you tested it successfully:
@echo off
setlocal enabledelayedexpansion
set InputFile=c:\info\input.txt
set FoundDouble=FALSE
set /a TestIndex = -1
for /f "tokens=1* delims=:" %%a in ('type "%InputFile%" ^| findstr.exe /n /r /i /c:"^DTM"') do (
	echo Line %%a: %%b
	if !TestIndex!==%%a (
		set FoundDouble=TRUE
	) else (
		set /a TestIndex = %%a + 1
	)
)
if %FoundDouble%==FALSE (
	ECHO cscript.exe /nologo "1.vbs"
) else (
	ECHO cscript.exe /nologo "2.vbs"
)

Open in new window

Edit: Forgot to ask: do you need to pass the file to analyze as command line argument, or can it remain hardcoded?

Author

Commented:
Thank you.  It seems to search through the file well, however how can identify the path where 1.vbs and 2.vbs resides?  Currently I have both vbs files in the same folder however the vbs file is not executing.
Bill PrewIT / Software Engineering Consultant
Top Expert 2016

Commented:
Do you only want to consider it a double if it is on the very next line, or could it be separated from the first by other lines?

~bp
C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

Most Valuable Expert 2018
Distinguished Expert 2018
Commented:
Did you remove the ECHO at the beginning of the line?
And do you mean in the same folder as the batch script? Just use "%~dp0", which will expand to the batch script's current Drive and Path, with a trailing backslash:
@echo off
setlocal enabledelayedexpansion
set InputFile=c:\info\input.txt
set FoundDouble=FALSE
set /a TestIndex = -1
for /f "tokens=1* delims=:" %%a in ('type "%InputFile%" ^| findstr.exe /n /r /i /c:"^DTM"') do (
	echo Line %%a: %%b
	if !TestIndex!==%%a (
		set FoundDouble=TRUE
	) else (
		set /a TestIndex = %%a + 1
	)
)
if %FoundDouble%==FALSE (
	cscript.exe /nologo "%~dp01.vbs"
) else (
	cscript.exe /nologo "%~dp02.vbs"
)

Open in new window

Author

Commented:
Thanks.
The vbs files are in a different path than the script, how can I modify the cscript to show the correct path where the vbs files reside?
Most Valuable Expert 2018
Distinguished Expert 2018

Commented:
Just set the path in lines 15 (for the 1 line scenario) and 17 (for the 2 lines scenario) after the "cscript.exe /nologo".

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial