要捕获通过管道传递给批处理文件的 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。