(view source code of isdev.bat as plain text)
@ECHO OFF
:: Checks if %1 is a valid device name.
ECHO.
IF "%1"=="" GOTO Syntax
IF "%1"=="/?" GOTO Syntax
:: DOS or NT?
VER | FIND "Windows NT" >NUL
IF ERRORLEVEL 1 GOTO DOS
:NT
:: Based on the fact that DIR doesn't show a volume label for devices
DIR %1 2>NUL | FIND /I "Volume" >NUL
IF ERRORLEVEL 1 ECHO %1 is a valid NT device name
IF NOT ERRORLEVEL 1 ECHO %1 is NOT a valid NT device name
GOTO End
:DOS
:: Based on the assumption that DIR displays
:: no "file" date and time for devices.
:: But first check AUX, CON and PRN, that are
:: displayed with the current time and date.
:: Sorry, this isn't a very elegant solution.
:: If you know a better way, I'm all ears...
SET OPATH=%PATH%
PATH %1
SET DEVICE=%PATH%
PATH %OPATH%
SET OPATH=
IF "%DEVICE%"=="AUX" GOTO Valid
IF "%DEVICE%"=="CON" GOTO Valid
IF "%DEVICE%"=="PRN" GOTO Valid
DIR \%DEVICE% | FIND "%DEVICE%" >NUL
IF ERRORLEVEL 1 GOTO Invalid
DIR \%DEVICE% | FIND "%DEVICE%" | FIND ":" >NUL
IF NOT ERRORLEVEL 1 GOTO Invalid
DIR \%DEVICE% | FIND "%DEVICE%" | FIND "." >NUL
IF NOT ERRORLEVEL 1 GOTO Invalid
DIR \%DEVICE% | FIND "%DEVICE%" | FIND "-" >NUL
IF NOT ERRORLEVEL 1 GOTO Invalid
DIR \%DEVICE% | FIND "%DEVICE%" | FIND "/" >NUL
IF NOT ERRORLEVEL 1 GOTO Invalid
:Valid
ECHO.%DEVICE% is a valid device name
GOTO End
:Invalid
ECHO.%DEVICE% is NOT a valid device name
GOTO End
:Syntax
ECHO IsDev, Version 2.00 for NT and DOS
ECHO Checks if the specified parameter is a valid device name
ECHO.
ECHO Usage: ISDEV device_name
:End
SET DEVICE=
ECHO.
page last modified: 2023-03-10