使用<重定向命令输入

时间:2012-09-20 11:04:47

标签: batch-file

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

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

但是,当我尝试将其重定向到批处理脚本时,它无效。

test.bat: -

 @echo off
 echo %1 %2

使用: -

运行它
test.bat<input.txt

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

阅读一行:

set /p "ln="
echo %ln%

读取循环中的所有行:

for /f "delims=" %%A in ('findstr "^"') do (
  echo %%A
)

答案 1 :(得分: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

这样的输入管道而失败