要捕获通过管道传递给批处理文件的 STDIN,可以使用命令行参数和输入重定向的组合。
以下是一个示例批处理文件(test.bat),用于捕获通过管道传递给它的 STDIN:
@echo off
REM 读取通过管道传递的 STDIN
setlocal enabledelayedexpansion
set "input="
for /F "delims=" %%i in ('type CON') do (
set "input=!input!%%i"
)
REM 在此处处理 STDIN
echo Input: %input%
在这个示例中,批处理文件首先使用 setlocal enabledelayedexpansion 启用了延迟扩展,这样可以在循环中访问变量。然后使用 for /F 命令和 'type CON' 来循环读取通过管道传递的 STDIN,并将每一行追加到 input 变量中。
可以通过以下命令将输入传递给批处理文件:
echo Test Input | test.bat
在这个例子中,echo Test Input 将字符串 "Test Input" 传递给批处理文件的 STDIN,然后通过管道传递给 test.bat。批处理文件将输出 "Input: Test Input"。
请注意,批处理文件使用了 type CON 来读取管道输入,这是为了确保在 Windows 中也能正常工作。在其他操作系统中,可能需要使用不同的命令来读取 STDIN。