Discussion:
WSH JScript single-character input ?
(too old to reply)
Dr J R Stockton
2011-12-04 22:18:49 UTC
Permalink
Can command-line JScript, running in Windows script Host, read a
*single* character from the keyboard without needing Enter? My old
16-bit Pascal directory program HUNT accepts single-character responses
for Yes/No/Quit, and it would be nice to have my 32-bit WSH version of
it do the same.

If anyone wants to look, the WSH is SEAKFYLE.JS ("documentation" is
SEAKFYLE.HTM), which is called by SEEK.BAT, all linked from
<http://www.merlyn.demon.co.uk/programs/32-bit/00index.htm>.
--
(c) John Stockton, nr London UK ?@merlyn.demon.co.uk IE8 FF8 Op11 Sf5 Cr15
news:comp.lang.javascript FAQ <http://www.jibbering.com/faq/index.html>.
<http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Evertjan.
2011-12-05 08:26:11 UTC
Permalink
Post by Dr J R Stockton
Can command-line JScript, running in Windows script Host, read a
*single* character from the keyboard without needing Enter? My old
16-bit Pascal directory program HUNT accepts single-character responses
for Yes/No/Quit, and it would be nice to have my 32-bit WSH version of
it do the same.
StIn without pipe will read from the keyboard.

========== test.js ===========
var input = '';
while (!WScript.StdIn.AtEndOfLine) {
input += WScript.StdIn.Read(1) + '-';
}
WScript.Echo(input);
==============================

run with cscript [wscript has no StIn] in the cmd-console:

cscript test.js
--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
Dr J R Stockton
2011-12-05 15:38:05 UTC
Permalink
Post by Evertjan.
Post by Dr J R Stockton
Can command-line JScript, running in Windows script Host, read a
*single* character from the keyboard without needing Enter?  My old
16-bit Pascal directory program HUNT accepts single-character responses
for Yes/No/Quit, and it would be nice to have my 32-bit WSH version of
it do the same.
StIn without pipe will read from the keyboard.
========== test.js ===========
var input = '';
while (!WScript.StdIn.AtEndOfLine) {
   input += WScript.StdIn.Read(1) + '-';}
WScript.Echo(input);
==============================
cscript test.js
Requires Enter.

--
(c) John Stockton, near London, UK. Using Google, no spell-check.
Mail: J.R.""""""""@physics.org or (better) via Home Page at
Web: <http://www.merlyn.demon.co.uk/>
FAQish topics, acronyms, links, etc.; Date, Pascal, JavaScript, ....|
Evertjan.
2011-12-05 18:05:05 UTC
Permalink
Dr J R Stockton wrote on 04 dec 2011 in
microsoft.public.scripting.jscrip
Post by Dr J R Stockton
Can command-line JScript, running in Windows script Host, read a
*single* character from the keyboard without needing Enter? ÿMy old
16-bit Pascal directory program HUNT accepts single-character
responses for Yes/No/Quit, and it would be nice to have my 32-bit
WSH version of it do the same.
StIn without pipe will read from the keyboard.
========== test.js ==========
var input = '';
while (!WScript.StdIn.AtEndOfLine) {
ÿ ÿinput += WScript.StdIn.Read(1) + '-';}
WScript.Echo(input);
========================
=====>
cscript test.js
Requires Enter.
Then I guess it cannot be done, as shown by scriptingguy in 2004:

<http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/05/how-can-i-
pause-a-script-and-then-resume-it-when-a-user-presses-a-key-on-the-
keyboard.aspx>
--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
Tom Lavedas
2011-12-05 20:33:39 UTC
Permalink
Post by Evertjan.
Dr J R Stockton wrote on 04 dec 2011 in
microsoft.public.scripting.jscrip
Post by Dr J R Stockton
Can command-line JScript, running in Windows script Host, read a
*single* character from the keyboard without needing Enter? My old
16-bit Pascal directory program HUNT accepts single-character
responses for Yes/No/Quit, and it would be nice to have my 32-bit
WSH version of it do the same.
StIn without pipe will read from the keyboard.
========== test.js ==========
var input = '';
while (!WScript.StdIn.AtEndOfLine) {
input += WScript.StdIn.Read(1) + '-';}
WScript.Echo(input);
========================
=====>
cscript test.js
Requires Enter.
<http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/05/how-can-i-
pause-a-script-and-then-resume-it-when-a-user-presses-a-key-on-the-
keyboard.aspx>
--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)- Hide quoted text -
- Show quoted text -
I wrote a JScript routine a little while back that used Sendkeys to
implement a one-letter routine that didn't need an enter key and
supported a timeout. Unfortunately, Win7 disables Sendkeys in a
command window, so it's now broken. On the other hand, Win7 added
Choice.exe back to the utility list. It supports single keystroke
entry.

I also wrote this little batch kludge that receives single key strokes
Y/N and control-C for cancel ...

:: YN.cmd - Yes/No/Cancelled test
@echo off
setlocal>%temp%.\1
SET /P =Your answer (Y/N)?<nul
for /f "tokens=2 delims=?" %%a in (
'xcopy %temp%.\1 %temp%.\1 /p /y ^< con 2^>NUL ^|find "?"'
) do set "Answer=%%a"
del %temp%.\1
ECHO.%Answer% % optional %
if "%Answer%"==" " ECHO Cancelled % optional % & exit /b 255
echo %Answer%| find /i "y" >NUL
if errorlevel 1 ECHO No % optional % & exit /b 1
echo Yes % optional %

It is not case sensitive. It returns three Errorlevels: Y = 0, N = 1,
Cancel = 255.
______________________________
Tom Lavedas

Loading...