Httprepl is not recognized as an internal or external command operable program or batch file

This batch file

@echo off set path=C:\Users\ssiyengar\Desktop\Pingtest\pinglist.csv set file=C:\Users\ssiyengar\Desktop\Pingtest\temp.txt set qosping=1 cls for /f "tokens=1-3 delims=," %%a IN (%path%) do ( ping %%c -n %qosping% > %file% findstr "time< time=" %file% >nul if %errorlevel%==1 ( echo %%a %%b IP %%c Ping FAILURE ) else ( echo %%a %%b IP %%c Ping SUCCESS ) ) pause

outputs:

'ping' is not recognized as an internal or external command, operable program or batch file. 'findstr' is not recognized as an internal or external command, operable program or batch file. SYS1 MC1 IP XX.XX.XX.XX Ping SUCCESS

The CSV file is :

SYS1,MC1,IP1 \ SYS2,MC2,IP2

Why is ping/findstr not recognized?
If I directly pass the values instead of from the CSV file, it works fine. Why? How can I resolve it?
Note: The environment variables already contain the path of Sys32.

asked Jun 8 at 10:06

1

The problem is that you set path. Path is a special environmental variable designed to hold paths to locations that have programs, such as ping and findstr.

by typing set path=... you overwriting this list with a file clearing the path for this time it runs. Luckily using set only changes the variable during this script's runtime and not for all sessions. This is why going to cmd and typing ping with the values from the csv is still working.

If you type the set path= line in that same cmd session, the manual typing ping with the values won't work anymore either until cmd is closed and reopened.

If you change: set path= to set mypath= and %path% to %mypath% your script will work.

answered Jun 8 at 11:08

LPChipLPChip

55.8k9 gold badges88 silver badges129 bronze badges

1

In the system variables you already have a variable with the name path,
it points to several paths where the command interpreter (cmd.exe) will
search and execute your commands, looking for files with the extensions
defined in PathExt, and when not finding, will return you:

  • 'ping' is not recognized as an internal or external command, operable program or batch file.
  • 'findstr' is not recognized as an internal or external command, operable program or batch file.

I suggest you know the names of the variables and start using different names.

answered Jun 8 at 11:15

Io-oIIo-oI

6,3883 gold badges11 silver badges37 bronze badges

1

You can try like this and you don't need to create a temporary file either:

@echo off Title Ping Tester set "My_CSV_PingList=%~dp0pinglist.csv" set qosping=1 set "LogFile=%~dp0PingResults.txt" If exist "%LogFile%" Del "%LogFile%" cls SetLocal EnableDelayedExpansion for /f "tokens=1-3 delims=," %%a IN (%My_CSV_PingList%) do ( Ping -n %qosping% %%c |find "TTL=">nul) && ( set "msg=%%a %%b IP %%c Ping SUCCESS" && echo !msg! echo !msg!>>"%LogFile%" ) || ( set "msg=%%a %%b IP %%c Ping FAILURE" && echo !msg! echo !msg!>>"%LogFile%" ) ) EndLocal Start "Log" /MAX "%LogFile%" pause

Bonus: Refer to how to use multiple colors in batch. You can show the message with a green color when success and a red color when failure.

@echo off Title Ping Tester With Powershell Foreground Colors In A Batch File set "My_CSV_PingList=%~dp0pinglist.csv" set qosping=1 set "LogFile=%~dp0PingResults.txt" If exist "%LogFile%" Del "%LogFile%" cls SetLocal EnableDelayedExpansion for /f "tokens=1-3 delims=," %%a IN (%My_CSV_PingList%) do ( Ping -n %qosping% %%c |find "TTL=">nul) && ( set "msg=%%a %%b IP %%c Ping SUCCESS" && Call :PSColor "!msg!" Green \n echo !msg!>>"%LogFile%" ) || ( set "msg=%%a %%b IP %%c Ping FAILURE" && Call :PSColor "!msg!" Red \n echo !msg!>>"%LogFile%" ) ) EndLocal Start "Log" /MAX "%LogFile%" pause Exit /B ::--------------------------------------------------------------- :PSColor <String> <Color> <NewLine> If /I [%3] EQU [\n] ( Powershell Write-Host "`0%~1" -ForegroundColor %2 ) Else ( Powershell Write-Host "`0%~1" -ForegroundColor %2 -NoNewLine ) Exit /B ::--------------------------------------------------------------

answered Jun 8 at 12:52

HackooHackoo

1,1557 silver badges20 bronze badges

1

Stop using the antiquated command prompt and use PowerShell instead.

$hosts = Import-CSV pinglist.csv $hosts | Foreach-Object { $result = (Test-NetConnection -ErrorAction SilentlyContinue ` -WarningAction SilentlyContinue -InformationLevel Quiet $_.IP) ? "SUCCESS" : "FAILURE" Write-Host ("{0} {1} IP {2} {3}" -f $_.Name,$_.mc,$_.IP,$result) }

You need to add a header line to your CSV to get the attribute names per line:

Name,mc,IP

answered Jun 9 at 13:14

Gerald SchneiderGerald Schneider

1,6881 gold badge12 silver badges18 bronze badges

3

Not the answer you're looking for? Browse other questions tagged batch batch-file ping findstr or ask your own question.

How do I run HttpRepl?

Configure Visual Studio for Windows to launch HttpRepl on F5 Don't forget to select it from the menu after adding it: Next time you F5 your project, Visual Studio will automatically launch HttpRepl with the appropriate base URL (same URL that would have been passed to a browser, controlled through launchsettings):

How do you fix Dotnet is not recognized as an internal or external command operable program or batch file?

I believe you either:.
Don't have NET SDK installed. Download and install the SDK..
Don't have the SDK's path added to user or system environment variables. Locate SDK installation path (for me it's C:\Program Files\dotnet ) and add it to env variables to be recognized by cmd..

Which is a cross platform command line tool for testing Web APIs and other HTTP endpoints?

The HTTP Read-Eval-Print Loop (REPL) is: A lightweight, cross-platform command-line tool that's supported everywhere . NET Core is supported. Used for making HTTP requests to test ASP.NET Core web APIs (and non-ASP.NET Core web APIs) and view their results.

zusammenhängende Posts

Toplist

Neuester Beitrag

Stichworte