无法在DOS中输入变量 [英] Can't enter a variable in DOS

查看:109
本文介绍了无法在DOS中输入变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在vDOS(DOS模拟器)中运行批处理文件,我希望用户在其中输入两个变量.每次运行文件时,它都不允许我输入变量.

I'm trying to run a batch file in vDOS (DOS emulator), where I want the user to input two variables. Every time I run the file, it doesn't let me enter the variables.

SET /P in=Input:
SET /P out=Output:

我期望发生的事情是让我输入变量的输入. 相反,它按原样执行这两个命令(不允许我输入输入).

What I expected to happen was that It'd let me enter the input for the variables. Instead, it executes both of the commands as they are (without letting me enter the input).

推荐答案

Windows cmd和MS-DOS完全不同,不同之处之一是set命令.在MS-DOS中,设置的唯一形式是set variable=value.没有set /Aset "variable=value"set /P.

Windows cmd and MS-DOS are very different things and one of the differences is the set command. In MS-DOS the only form of set is set variable=value. There are neither set /A, set "variable=value" nor set /P.

set /P是Windows NT的cmd.exe的功能.在DOS中,您必须使用3 rd 方软件来获取用户输入并将其存储在变量中.这是一些解决方案

set /P is a feature of Windows NT's cmd.exe. In DOS you must use 3rd party software to get user input and store in a variable. Here are some solutions

SENVAR INPUT Input string:

  • EDITVARCHOOSE

  • EDITVAR and CHOOSE

    editvar -p "Input string: " INPUT
    

  • FC.COM

    @echo off
    :: based on batch from PC Magazine June 27, 1995 page 248
    :: this version puts temps in C:\DOS dir and shortens var names
    :: User input is returned in variable STR
    :input
    > C:\DOS\en#er.bat fc con nul /lb1 /n|date|find "    1:  "
    > C:\DOS\enter.bat echo set str=
    >>C:\DOS\enter.bat echo :loop
    >>C:\DOS\enter.bat echo if not '%%str%%==' set str=%%str%% %%5
    >>C:\DOS\enter.bat echo if '%%str%%==' set str=%%5
    >>C:\DOS\enter.bat echo shift
    >>C:\DOS\enter.bat echo if not '%%5==' goto loop
    call en#er.bat
    del C:\DOS\enter.bat
    del C:\DOS\en#er.bat
    

  • ANSI.SYS

    @ECHO OFF
    
    REM * Ask for USeR INPUT and store it in variable USRINPUT
    REM * Assumes ANSI.SYS is loaded
    REM * Written by Rob van der Woude
    
    SET USRINPUT=
    
    REM * Turn on ANSI key translation (translate Enter
    REM * key to F6+Enter sequence) and ask for input:
    ECHO ←[13;0;64;13pEnter one word only . . .
    
    REM * Copy entered text to temporary file:
    COPY CON %TEMP%.\~USRINP.TMP
    
    REM * Turn off ANSI key translation and clear irrelevant screen output:
    ECHO ←[13;13p←[3A←[K←[1B←[K←[1B←[K←[2A
    
    REM * Add empty line to temporary file. The empty line
    REM * will be used to stop DATE asking for new date.
    ECHO.>> %TEMP%.\~USRINP.TMP
    ECHO.>> %TEMP%.\~USRINP.TMP
    
    
    REM * Create a temporary batch file that will store the
    REM * entered text into the environment variable USRINPUT:
    TYPE %TEMP%.\~USRINP.TMP | DATE | FIND "):" > %TEMP%.\~USRINP.BAT
    
    REM * Create more temporary batch files. Add
    REM * more command line parameters if necessary,
    REM * as in: ECHO SET USRINPUT=%%3 %%4 %%5 %%6 %%7 %%8 %%9>CURRENT.BAT
    ECHO SET USRINPUT=%%3>CURRENT.BAT
    
    REM * VOER.BAT and TYP.BAT are replacements for CURRENT.BAT for Dutch
    REM * DOS versions; add your own language versions if necessary:
    ECHO SET USRINPUT=%%6>VOER.BAT
    ECHO SET USRINPUT=%%4>TYP.BAT
    
    REM * This temporary batch file now sets the variable USRINPUT:
    CALL %TEMP%.\~USRINP.BAT
    
    REM * Display the result:
    ECHO You typed: ←[1m%USRINPUT%←[0m
    ECHO.
    PAUSE
    
    REM * Finally, clean up the mess of temporary files:
    FOR %%A IN (%TEMP%.\~USRINP.BAT %TEMP%.\~USRINP.TMP VOER.BAT TYP.BAT CURRENT.BAT) DO DEL %%A
    

    ←是转义字符(27h)

    如果您只想获得简单的答案,例如Y/N,则CHOICE.COM是为此目的而设计的

    In case you just want to get simple answers like Y/N then CHOICE.COM is designed for that purpose

    另请参见

    • MS-DOS 6.22 Batch File User Input to Environment Variable
    • Prompt for variable in DOS 7.1

    这篇关于无法在DOS中输入变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆