2015-10-15 349 views
1

大家好,我正在尝试使用Windows命令行进行一些小工作。我测试了输入重定向,但它似乎并没有工作:Windows 8.1命令行 - 输入重定向不起作用

我创建了一个包含以下字符串中的test.txt文件: *.txt

如果键入:dir /B *.txt,我得到的名单。目录中的txt文件。

如果我输入:dir /B < test.txt,结果等于dir /B,即它忽略输入重定向。该文件是用写字板创建的。有什么想法出错?

感谢,

最大

编辑:如果我尝试dir /B $(< test.txt),一个错误信息弹出:The system cannot find the file specified

+0

输入重定向不适用于'dir',因为它根本不期望来自stdin的输入。 – Marged

回答

0

输入重定向不dir工作,因为它根本不从标准输入期望的输入。如果它会对stdin做出反应,那么只需在没有任何参数的情况下运行dir时暂停并等待输入。 如果你想从文件中读取模式这样做:

for /f %%i in (pattern.cfg) do set pattern=%%i 
dir /b %pattern% 

这会推从pattern.cfg文件的最后一个(或唯一的一行)到变量模式。

+0

谢谢。我用“回声”进行测试,它似乎也不工作。我只是想在测试一些工作前测试一些命令。其中一个测试是尝试重定向来自文件的std输入。回声似乎也没有采取。这是否意味着来自文件的输入不适用于所有命令?什么是可以使用它的命令? – madmaxthc

+0

diskpart可以工作。但我想我还不明白你想达到什么。也许最好是你创建一个临时批处理文件,你从你的主批次调用 – Marged

+0

恩,谢谢。这是一个解决方法。我仍然感到困惑,我似乎无法利用输入重定向,但至少这会完成这项工作。感谢您的时间:) – madmaxthc

0

轻微的变化,但是这个工作对我来说:

for /f "delims=" %i in (test.txt) do set output=%i 
dir /b %output% 

注意,这将是罚款,直接在命令行上,但在一个批处理文件在上面看到的,你应该加倍的“%”标志回答。