Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test if STDIN is terminal in batch?

In shell I can do this:

if test -t 0  ; then
  echo stdin is a tty
  exit 0
fi

How can I do this in batch?

like image 492
Zippon Avatar asked Mar 21 '23 01:03

Zippon


1 Answers

EDITED - Thank you to all the testers.

@echo off
    timeout 1 2>nul >nul
    if errorlevel 1 (
        echo input redirected
    ) else (
        echo input is console
    )

The timeout command tries to directly get access to the console, and this will fail if the batch file is executed as

myBatchFile.cmd < input.txt
echo something | myBatchFile.cmd

Tested on Windows XP (timeout from W2003 Resource Kit), 7 and 8.1.

like image 98
MC ND Avatar answered Mar 29 '23 11:03

MC ND