Skip to main content

Posts

Showing posts from March, 2012

Count number of lines - 'findstr'

How do I count number of lines in a command output? findstr /r/n "^" | find /c ":" Above commands will display number of lines output by whatever command (well, nearly whatever) you specify in the front.  For example:  C:\>ping localhost | findstr /r/n "^" | find /c ":" FINDSTR: // ignored 12 This comes handy if you want to find out how many OUs you have in Active Directory: dsquery ou  -limit 0 | findstr /r/n "^" | find /c ":" How many user accounts there are: dsquery user -limit 0 | findstr /r/n "^" | find /c ":" Computers: dsquery computer -limit | findstr /r/n "^" | find /c ":"

Resolve list of hostnames to IP addresses

Recently I needed to check if a large number of hostnames were resolving to valid IP addresses on an internal network. This is what I came up with: for /F %i in (names.txt) do @echo %i & nslookup %i | findstr /n "Address" | findstr /b "5" The output looks as follows:  TESTBOX1 5:Address:  10.11.20.43 TESTBOX2 5:Address:  10.11.20.44 TESTBOX3 5:Address:  10.11.20.45 TESTBOX4 *** dnsbox1.lab.local can't find TESTBOX4: Non-existent domain As we can see first three records resolve. The fourth one doesn't have DNS record.  For this to work, each hostname must be on a separate line in a text file "names.txt" and the command must be run from directory where the file sits. Alternatively you can specify full path (i.e c:\names.txt). Let's break it down and see what's actually going on.  We use for /f loop to parse names.txt and assign each line to variable %i, we then suppress output  (@echo) of nslookup and parse it