有没有办法将活动状态下在 .bat 文件中输入的文本复制到另一个 .bat 文件或 .txt 文件中?例如,如果要求您输入密码(在批处理文件中),批处理文件会将其复制并粘贴到另一个文件中 -
答案1
您是否可以控制输入的内容取决于询问密码的方式。
批处理脚本非常基础。命令行本身可以实现的功能在批处理脚本中同样可以实现,因为批处理脚本只不过是使用一组非常有限的附加指令逐个输入命令而已。
如果您可以控制整个过程,那么您可以执行以下操作:
@echo off
:: -- Ask for password
set /p Password=Please type in the password
:: -- Append the typed password to a logfile
echo %date% %time% - The user typed %Password% >> log.txt
:: -- Parse password to program as parameter
Program.exe -p %Password%
答案2
执行此类日志记录的一种方法是使用子程序或宏来处理所有输入/输出,而不是每次需要输入时都设置/p。
举个例子:
@echo off
REM MacroDefinition
setlocal DisableDelayedExpansion
set LF=^
::Above 2 blank lines are required - do not remove
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
Set @input=For /L %%n in (1 1 2) do if %%n==2 (%\n%
For /F "tokens=1,2 delims=, " %%G in ("!argv!") do (%\n%
Set /P "tmpV=%%~G" %\n%
Set %%H=!tmpV!%\n%
ECHO(!tmpV!^>^>log.txt %\n%
) %\n%
) ELSE setlocal enableDelayedExpansion ^& set argv=,
REM Declare the prompt as argv 1 and the variable to be set as argv 2:
%@input% Name: Name
ECHO(!name!
pause
关于此形式的宏的说明:
不使用 endlocal 而过度使用将导致超出最大递归级别。