输入重定向适用于.exe文件或内部Windows命令。
app.exe < ListOfNames.txt
sort < input.txt
但是,当我尝试将其重定向到批处理脚本时,它无效。
test.bat: -
@echo off
echo %1 %2
使用: -
运行它test.bat<input.txt
其中input.txt有两个字符串。
但是,即使在批处理脚本的情况下,它也可以正常重定向输出。
这是预期的行为还是我犯了一些语法错误?有没有其他方法从文件中读取参数而不是手动解析它?
答案 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