1

输入重定向适用于 .exe 文件或内部 Windows 命令。

    app.exe < ListOfNames.txt
    sort < input.txt

但是,当我尝试将其重定向到批处理脚本时它不起作用。

test.bat :-

 @echo off
 echo %1 %2

运行它使用: -

test.bat<input.txt

其中 input.txt 有两个字符串。

但是,即使在批处理脚本的情况下,它也可以很好地重定向输出。

这是预期的行为还是我犯了一些语法错误?有没有其他方法可以从文件中读取参数而不是手动解析它?

4

2 回答 2

3

命令行上提供的参数与 stdin (重定向输入所在的位置)完全不同。这对于批处理脚本和 .exe 程序都是如此。

一些程序旨在通过命令行参数或标准输入接受相同的值。但这不是常态。这是程序开发人员提供的功能。

如果要读取批处理脚本中的重定向输入,则必须执行以下操作之一。

要读取单行:

set /p "ln="
echo %ln%

读取循环中的所有行:

for /f "delims=" %%A in ('findstr "^"') do (
  echo %%A
)
于 2012-09-20T12:27:23.023 回答
0

除了 dbenhams 的回答,您还可以阅读多行以set/p进行输入重定向,例如myBatch.bat < commands.txt

@echo off
set "line_1="
set "line_2="
set "line_3="
set /p line_1=
set /p line_2=
set /p line_3=
set line_

但这会因输入管道而失败,例如type commands.txt | myBatch.bat

于 2012-09-20T12:44:56.700 回答