Batch file Can';不要在DOS中输入变量

Batch file Can';不要在DOS中输入变量,batch-file,environment-variables,user-input,dos,Batch File,Environment Variables,User Input,Dos,我试图在vDOS(DOS模拟器)中运行一个批处理文件,希望用户在其中输入两个变量。每次我运行该文件时,它都不允许我输入变量 SET /P in=Input: SET /P out=Output: 我期望发生的是,它允许我输入变量的输入。 相反,它按原样执行这两个命令(不允许我输入输入)。/p直到Windows 2000或NT才引入。传统MS-DOS或同等产品将不具备此功能 其中一个区别是set命令。在MS-DOS中,集合的唯一形式是set variable=value。既没有set/A,set

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

SET /P in=Input:
SET /P out=Output:
我期望发生的是,它允许我输入变量的输入。
相反,它按原样执行这两个命令(不允许我输入输入)。

/p
直到Windows 2000或NT才引入。传统MS-DOS或同等产品将不具备此功能

其中一个区别是
set
命令。在MS-DOS中,集合的唯一形式是
set variable=value
。既没有
set/A
set“variable=value”
也没有
set/P

set/p
是Windows NT的cmd.exe的一项功能。在DOS中,您必须使用第三方软件获取用户输入并存储在变量中。这里有一些解决方案

  • SENVAR输入字符串:
    
  • editvar-p“输入字符串:”输入
    
  • @echo关闭
    ::基于《个人电脑》杂志1995年6月27日第248页的批次
    ::此版本将temp放在C:\DOS dir中,并缩短var名称
    ::在变量STR中返回用户输入
    :输入
    >C:\DOS\en#er.bat fc con numl/lb1/n | date |查找“1”:
    >C:\DOS\enter.bat echo set str=
    >>C:\DOS\enter.bat echo:循环
    >>C:\DOS\enter.bat echo如果不是“%%str%%==”设置str=%%str%%%5
    >>C:\DOS\enter.bat echo如果“%%str%%==”设置str=%%5
    >>C:\DOS\enter.bat echo shift
    >>C:\DOS\enter.bat echo如果不是“%%5==”转到循环
    打电话给恩#尔·巴特
    del C:\DOS\enter.bat
    del C:\DOS\en#er.bat
    
  • @ECHO关闭
    REM*请求用户输入并将其存储在变量USRINPUT中
    REM*假设加载了ANSI.SYS
    罗布·范德沃德写的《雷姆》
    设置USRINPUT=
    REM*打开ANSI键转换(转换输入
    REM*按F6键+输入顺序)并请求输入:
    回音←[13;0;64;13仅输入一个单词。
    REM*将输入的文本复制到临时文件:
    复制CON%TEMP%\~USRINP.TMP
    REM*关闭ANSI键转换并清除不相关的屏幕输出:
    回音←[13;13p←[3A←[K]←[1B←[K]←[1B←[K]←[2A
    REM*将空行添加到临时文件。空行
    REM*将用于停止日期请求新日期。
    ECHO.>>%TEMP%.\~USRINP.TMP
    ECHO.>>%TEMP%.\~USRINP.TMP
    REM*创建一个临时批处理文件,用于存储
    REM*在环境变量USRINPUT中输入文本:
    键入%TEMP%.\~USRINP.TMP | DATE | FIND“:“>%TEMP%.\~USRINP.BAT
    REM*创建更多临时批处理文件。添加
    REM*如有必要,提供更多命令行参数,
    REM*as in:ECHO SET USRINPUT=%%3%%4%%5%%6%%7%%8%%9>CURRENT.BAT
    ECHO SET USRINPUT=%%3>CURRENT.BAT
    REM*VOER.BAT和TYP.BAT是荷兰语CURRENT.BAT的替代品
    REM*DOS版本;必要时添加您自己的语言版本:
    回声集USRINPUT=%%6>VOER.BAT
    ECHO SET USRINPUT=%%4>类型.BAT
    REM*此临时批处理文件现在设置变量USRINPUT:
    致电%TEMP%.\~USRINP.BAT
    REM*显示结果:
    回显您键入的内容:←[1m%USRINPUT%←[0m
    回声。
    暂停
    REM*最后,清理混乱的临时文件:
    对于(%TEMP%.\~USRINP.BAT%TEMP%.\~USRINP.TMP VOER.BAT TYP.BAT CURRENT.BAT)中的%%A,请删除%%A
    
← 是

如果你只想得到简单的答案,比如Y/N,那么
CHOICE.COM
就是为此而设计的

另见