MoonPoint Support Logo

 


Shop Amazon Warehouse Deals - Deep Discounts on Open-box and Used ProductsAmazon Warehouse Deals



Advanced Search
November
Sun Mon Tue Wed Thu Fri Sat
29 30          
2020
Months
NovDec


Thu, May 18, 2017 10:08 pm

Batch file to ping several hosts and log results

Since a connectivity issue between a Windows XP system in another country and systems in the United States seemed to correlate with the time of day that connectivity attempts were taking place, I wanted to have a batch file that would periodically ping from the source to the destination hosts and record the results, so that I could determine if packet loss was occurring at particular times every day because of contention with other traffic. So I created the following batch file (pinghosts.bat):

@echo off

set pingCount=5
set timeOut=500
set dirPath=%HOMEPATH%\Documents

REM ping google.com, apple.com, and cisco.com
for %%i in ("216.58.217.142" "17.142.160.59" "72.163.4.161") do (
   if not exist %dirPath%\%%i.txt (
      systeminfo | find "Time Zone:" > %dirPath%\%%i.txt
   )
   echo. >> %dirPath%\%%i.txt
   echo %date% %time% >> %dirPath%\%%i.txt
   ping -n %pingCount% -w %timeOut% %%i >> %dirPath%\%%i.txt
)

[ More Info ]

[/os/windows/commands/batch] permanent link

Tue, Nov 25, 2014 10:35 pm

Checking on process memory consumption on a Windows system

Sometimes when checking on excessive memory usage on a Microsoft Windows system with the Task Manager I see that many instances of a particular process may be listed. I wanted a way from a command prompt to total the amount of memory consumed by processes with a particular name, e.g. chrome.exe, so I created a showmemusage.bat batch file to allow me to specify a particular process name and then have the script add the memory usage for all processes with that name.

[ More Info ]

[/os/windows/commands/batch] permanent link

Mon, Jul 12, 2010 11:33 am

Setting a Variable to be the Output of a Command

In a Windows batch file, I needed to set a variable to be the output of a command. You can use the for command for that purpose as shown below. In the example below, I wanted to count the number of hpboid.exe processes running on a system.

REM Count the number of hpboid.exe processes running.
for /f "delims=" %%a in ('tasklist /fi "imagename eq hpboid.exe" ^| find /c /i "hpboid.exe"') do set numprocesses=%%a
echo Number of hpboid.exe processes running: %numprocesses% >> %log%

The tasklist /fi "imagename eq hpboid.exe" command uses the tasklist command with the /fi option to filter the output of running processes to just those named hpboid.exe. I then want to "pipe" the output to the find command. I use the /i option to have find ignore the case of the letters in hpboid.exe, i.e., I want to count a process whether it is named hpboid.exe or HPBOID.exe, etc. I use the /c option to tell find to display only the count of lines containing the string hpboid.exe.

For Windows, and I presume DOS as well, you need to put a caret, i.e., a ^ in front of the pipe character, | character to "escape" how it would otherwise be interpreted.

The variable numprocesses is set to be the count of the hpboid.exe processes running, which I then send to a log file, i.e., %log%, which is a variable that was set earlier in the batch file.

References:

  1. Escaping a Character in a Windows Batch File
    Date: July 12, 2010
    MoonPoint Support
  2. Escape Characters
    Date: January 17, 2008
    Batcheero
  3. Escape character
    Wikipedia, the free encyclopedia

[/os/windows/commands/batch] permanent link

Mon, Jul 12, 2010 11:16 am

Escaping a Character in a Windows Batch File

I had the following in a Microsoft Windows batch file:

REM Count the number of hpboid.exe processes running.
for /f "delims=" %%a in ('tasklist /fi "imagename eq hpboid.exe" | find /c /i "hpboid.exe"') do set numprocesses=%%a
echo Number of hpboid.exe processes running: %numprocesses% >> %log%

When I ran the batch file, I would see | was unexpected at this time.. I then realized I needed to "escape" the meaning of the | at that point in the code. For Windows, and I presume DOS as well, you can put a caret, i.e., a ^, in front of a character to "escape" how it would otherwise be interpreted. So the following worked, instead:

for /f "delims=" %%a in ('tasklist /fi "imagename eq hpboid.exe" ^| find /c /i "hpboid.exe"') do set numprocesses=%%a

If you are using a variable, e.g. %myvariable% in a for loop in a batch file, you need to use another percent sign, i.e., a % before each of the % characters used for the variable name. I.e., you need to use %%myvariable%%. You can think of the additional % "escaping" the meaning of the other one.

References:

  1. Escape Characters
    Date: January 17, 2008
    Batcheero
  2. Escape character
    Wikipedia, the free encyclopedia

[/os/windows/commands/batch] permanent link

Once You Know, You Newegg AliExpress by Alibaba.com

Shop Amazon Local - Subscribe to Deals in Your Neighborhood

Valid HTML 4.01 Transitional

Privacy Policy   Contact

Blosxom logo