我正忙着制作扩展的CMD。但功能在这里并不重要。它仅用于在检测到+时运行特殊命令,否则只是将变量打印到控制台中。
@set "maininput="
@set /p "mainInput= Enter in a command here ~ "
@set "SEALDETECT=%mainInput:~0,1%"
@if "%SEALDETECT%"=="+" goto SealConsole
%maininput%
这在大多数情况下都可以正常使用,但如果我输入“echo %date%
”,则只输出“%date%
”。我希望它实际上回显变量,如"echo %date%
“将输出实际日期
我很确定问题是在另一个变量中有一个变量。我需要一种解决这个问题的方法。
答案 0 :(得分:0)
有几种方法可以解决这个问题。最简单的方法是启用延迟扩展,然后使用!var!
显示变量值而不是%var%
:
@echo off
setlocal EnableDelayedExpansion
echo Use ^^^!var^^^! to show var value
:nextLine
set "maininput="
set /p "mainInput=Enter in a command here ~ "
if not defined maininput exit /B
set "SEALDETECT=%mainInput:~0,1%"
if "%SEALDETECT%"=="+" goto SealConsole
%maininput%
goto nextLine
:SealConsole
echo Special command: %maininput:~1%
goto nextLine
示例:
Use !var! to show var value
Enter in a command here ~ echo !date!
06/10/2017
Enter in a command here ~