在Windows批处理文件中禁用命令历史记录

7

在批处理文件中禁用命令历史记录是否可能?

调用my.bat后,调用SET /P等操作的结果将被推送到历史记录中。因此,如果我要求用户输入计算机名称,则历史记录现在还包含该计算机名称。

P:>my.bat

P:>SET /P MYENV="myenv prompt:"

myenv prompt:lskdjf

P:>lskdjf

P:>

DOSKEY似乎没有暂停或禁用推入历史堆栈的方法。

2个回答

11

简短回答

doskey /reinstall

这将会清除所有历史记录。

第二种方式是在您的批处理中启动一个新的cmd.exe实例,这只会删除set/p语句创建的历史记录。

@echo off
if "%~1"==":historySafe" goto :historySafe
cmd /c "%~f0" :historySafe
exit /b

:historySafe
set /p var=Password
echo %var%
exit /b

1
那第二部分真是太棒了。为什么要破坏在调用我的 .bat 文件之前的历史记录呢? - hometoast
也许你应该只是执行 call :historySafe 而不是调用自身和使用 goto ? - quantum
1
@xiaomao:仅仅调用:historySafe是不起作用的。诀窍在于创建一个新的cmd-context。 - jeb

0

在Windows命令行中,按下F7键可以查看该窗口中输入的所有命令历史记录。下面是打开Windows命令行历史记录框时的图片。

enter image description here


但是这与“如何禁用历史记录”有什么关系呢? - jeb
虽然我同意这并没有对回答问题有所帮助,但我必须承认,在使用Windows几十年的过程中,我从未遇到过这个功能。 - paulroho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接