变量不按预期打印

时间:2017-10-06 04:03:10

标签: batch-file

我正忙着制作扩展的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%“将输出实际日期

我很确定问题是在另一个变量中有一个变量。我需要一种解决这个问题的方法。

1 个答案:

答案 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 ~