如何制作一个看起来与命令提示符完全相同的批处理文件?

如何制作一个看起来与命令提示符完全相同的批处理文件?

我想创建一个批处理文件,它在运行时看起来和工作方式与命令提示符完全相同,但我可以对用户输入的所有内容进行某些操作(例如记录它)。我该怎么做?

答案1

以下简短的批处理文件将发挥与提示相同的功能:

@echo off
:start
set inp=
set /P inp=%cd%^> 
:: do evil stuff with %inp% here (optional)
%inp%
goto start

但有以下注意事项:inp变量对于输入的人来说是可见的,如果您执行Control+ C,它会询问您是否要终止批处理文件。

代码演练:

  • @– 隐藏控制台中的下一个命令
  • echo off– 隐藏控制台中的所有以下命令
  • set inp=– 将inp变量设置为空字符串,因为inp如果用户只是输入,以下命令将保持不变Enter
  • set /P inp=– Set /P 将根据用户输入设置一个变量,提示符是符号后面的内容=
  • %cd%^> (注意末尾的空格)– 当前目录和字符>(出于某些无聊的原因,^是命令提示符中的转义字符)。这用作inp变量的提示。
  • %inp%执行的内容变量inp
  • goto start– 循环回到顶部。

显然,您必须问自己,为什么在没有某种exec()调用或类似操作的情况下,这是可能的。原因是批处理的每一行都在运行时“编译” - 变量被替换到命令中。当您执行循环时,您可以看到这一点,for每次使用set /A(“算术”)来增加变量%- 每次都会得到相同的值。(对于预期的行为,除了常量外,请在 set /A 中使用var而不是。)%var%

相关内容