Wie kann ich eine Datei in ein Programm einfügen, das stdin liest (auf der Windows-Befehlszeile)?

6

Ich habe ein Programm P das verarbeitet stdin. Wie kann ich a Datei in dieses Programm aus dem Windows-Befehlszeile ?

P < filename

funktioniert nicht.

filename | P
filename > P

geht auch nicht.

bearbeiten

versuchte es sogar noch einmal

P < filename

oder

grep abc < lab.txt

funktioniert . Vielen Dank für die Teilnahme.

joh
quelle
1
An welchem ​​Betriebssystem arbeitest du?
EBGreen
1
Die Befehlsumleitung unter MS Windows funktioniert genauso wie unter GNU / Linux. Ob p < myfile funktioniert nicht, es ist wohl kein problem der umleitung. Versuchen Sie etwas wie sort < myfile und sehen, was passiert.
bjanssen
wie erwähnt, p & lt; Datei funktioniert nicht.
joh
1
Hast du es versucht type filename | P
Kevin Fegan
1
Löst das dein Problem? Soll ich das als Antwort posten? ... Warten Sie, ich sehe, dass Sie Ihre Frage bearbeitet haben P < filename arbeitet jetzt. Klingt so, als hättest du kein Problem mehr.
Kevin Fegan

Antworten:

2

Ich habe dieses Skript ausprobiert, das den Inhalt des Dateinamens als Variable "a" festlegte und dann diese Variable "a" als Argument an das Programm "p" weiterleitete.

@echo off
for /f "tokens=1 delims={" %%a in ('TYPE filename ^| FINDstr /r "[a-z]"') do (cmd /c p "%%a")
pause

Beachten Sie, dass dieses Skript eine Reihe von Einschränkungen aufweist, da ich im Befehl findstr reguläre Ausdrücke verwendet habe, vorausgesetzt, der Inhalt des Dateinamens besteht nur aus Text. Ich weiß nicht, wie der Inhalt Ihres Dateinamens aussieht, daher müssen Sie ihn an Ihre Bedürfnisse anpassen. Außerdem müssen Sie Ihr Programm "p" so ändern, dass es Argumente akzeptiert. Ich hoffe das hilft.

TahaEltahawy
quelle