批处理 SET /p 在 cmd 中有效,但在 DOSBox 中无效
Batch SET /p works in cmd but not in DOSBox
我有这个批号:
IF [%1]==[] GOTO NoParameter
IF NOT [%1]==[] GOTO Parameter
:NoParameter
SET /p "Name= ASM file name (exclude .ASM): "
TASM /ZI %Name%
IF ERRORLEVEL 1 GOTO End
TLINK /v %Name%
IF ERRORLEVEL 1 GOTO End
TD %Name%
GOTO End
:Parameter
TASM /ZI %1
IF ERRORLEVEL 1 GOTO End
TLINK /v %1
IF ERRORLEVEL 1 GOTO End
TD %1
:End
它在 CMD 中运行良好,但在我真正需要它的 DOSBox 中却不行。脚本不会在 SET /p 处暂停,而是继续执行下一个命令,将 null 作为参数,然后在 TLINK 处停止,因为给定的参数无效。如果我在 运行 来自 DOSBox 的脚本时输入一个参数,脚本将完美运行。知道如何获得这样的用户输入吗?
DOSBox 不支持 set /p
等 XP 命令扩展,开发者 was against it。
输入字符串的唯一方法是使用另一个实用程序,例如该论坛上提到的 string25
。
我有这个批号:
IF [%1]==[] GOTO NoParameter
IF NOT [%1]==[] GOTO Parameter
:NoParameter
SET /p "Name= ASM file name (exclude .ASM): "
TASM /ZI %Name%
IF ERRORLEVEL 1 GOTO End
TLINK /v %Name%
IF ERRORLEVEL 1 GOTO End
TD %Name%
GOTO End
:Parameter
TASM /ZI %1
IF ERRORLEVEL 1 GOTO End
TLINK /v %1
IF ERRORLEVEL 1 GOTO End
TD %1
:End
它在 CMD 中运行良好,但在我真正需要它的 DOSBox 中却不行。脚本不会在 SET /p 处暂停,而是继续执行下一个命令,将 null 作为参数,然后在 TLINK 处停止,因为给定的参数无效。如果我在 运行 来自 DOSBox 的脚本时输入一个参数,脚本将完美运行。知道如何获得这样的用户输入吗?
DOSBox 不支持 set /p
等 XP 命令扩展,开发者 was against it。
输入字符串的唯一方法是使用另一个实用程序,例如该论坛上提到的 string25
。