2016-07-12 22 views
1

Also ich habe (was ich denke zu sein) eine interessante Frage.Nicht-Standard-Datei-Deskriptor in einem Batch-Skript

Bei der Arbeit teste/konfiguriere ich ein Ethernet-Gerät, das wir mit einem proprietären Befehlszeilenprogramm erstellen.

Grundsätzlich öffnen Sie eine Eingabeaufforderung, geben Sie ethutil in das entsprechende Verzeichnis, und dann Zugriff auf den Chip über JTAG.

In diesem Dienstprogramm können Sie "Skripts" ausführen, bei denen es sich lediglich um Textdateien handelt, die mit entsprechenden Befehlen gefüllt sind. Sie werden wie folgt ausführen:

-->run test_script.txt 

Dies wird ausspucken dann das Feedback auf alle Befehle in das Skript.

ich genommen habe viele Register zu automatisieren schreibt/liest von Rohrleitungen Befehle an das Dienstprogramm mit einer Batch-Datei, etwa so:

type run test_script.txt | ethutil >nul 

Die nul ist es gerade in all den Ausgang zu unterdrücken meine Batch-Anzeige. Das funktioniert sehr gut, aber ich habe immer eine Fehlermeldung erhalten, dass die Datei nicht gefunden werden kann:

The system cannot find the file specified. 
Error occurred while processing: run. 

test_script.txt 

Bevor vorwärts gehen, ist zu beachten, dass dieser Fehler nicht auftritt, wenn ich aus innerhalb von nur das Skript ausführen das Dienstprogramm selbst (dh kein Batch-Skript).

Jetzt habe ich versucht, die Fehler wie dieser surpressing:

type run test_script.txt | ethutil >nul 2>&1 

Aber der Fehler zeigt noch oben, so dass es eindeutig nicht Teil stderr ist.

Auch wenn ich nul durch eine Protokolldatei ersetzen, werden die Fehler nicht in der Protokolldatei angezeigt.

Also meine Fragen sind: Gibt es eine Möglichkeit, herauszufinden, warum dieser Fehler angezeigt wird, wenn ich das Batch-Skript ausführen? Wenn es nicht Teil von stderr oder stdout ist, worum geht es? Ist es überhaupt möglich zu wissen, woran es liegt?

Vielen Dank im Voraus.

P.S. Ich verstehe, dass dies wahrscheinlich nur eine Eigenart der proprietären Software ist, aber ich dachte, ich würde fragen, ob es etwas mit Windows zu tun haben könnte.

Antwort

3

type ist nicht echo.

c:\> type /? 
displays the contents of a text file or text files 

Es beschwert sich, weil run keine Textdatei ist, und (vermutlich) funktioniert test_script.txt zu lesen, weil es ist.

Der Fehler kommt von stderr von "type", also wird die Weiterleitung von ethutils stderr nicht unterdrückt. Wenn Sie wirklich wollten, könnten Sie type run 2>nul | ethutil, aber da es keine run Datei gibt, es funktioniert nicht richtig/tun, was Sie erwarten, und Sie sollten es beheben.

+0

Ich habe sicherlich nicht daran gedacht. Danke für die Klarstellung! – detroitwilly

+1

Guter Job, der das Problem diagnostiziert. Aber die Lösung ist einfach: 'echo run test_script.txt | ethutil> nul' oder 'type test_script.txt | ethutil> nul' – dbenham