___ qstntxt ___
Von der Windows-Eingabeaufforderung erzeuge ich eine Textdatei aller Dateien in einem Verzeichnis:
%Vor%
Ausgabe:
%Vor%
Ich muss die Datei "config.txt" an eine andere ausführbare Datei füttern, aber bevor ich das tue, muss ich die Datei ändern, um zusätzliche Informationen hinzuzufügen, die die ausführbare Datei benötigt. Also benutze ich den folgenden Befehl:
%Vor%
Ich erwarte das Ergebnis:
%Vor%
Die Datei "config.txt" wird jedoch nicht geändert. Mit der Option "-w" erhalte ich die Warnmeldung:
Unbrauchbare Verwendung einer Konstante im leeren Kontext bei -e Zeile 1.
Was mache ich falsch?
___ tag123windows ___ ALLGEMEINER WINDOWS-SUPPORT IST OFF-TOPIC. Support-Fragen können unter https://superuser.com gestellt werden. Windows ist ein von Microsoft entwickeltes Betriebssystem. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von Windows-APIs oder Windows-spezifischem Verhalten in Bezug auf Ihren Code bezieht, nicht nur, weil Sie Ihren Code unter Windows ausführen.
___ answer660680 ___
Das Perl-Skript funktioniert von einer Linux-Shell. Vielleicht entkommst du etwas nicht richtig.
___ answer660720 ___
Windows cmd.exe
verwendet %code% nicht als Trennzeichen, nur %code% . Was Sie tun, entspricht:
%Vor%
So beschwert sich %code% "Du hast mir eine Zeichenfolge gegeben, aber das tut nichts".
Die Lösung besteht darin, stattdessen doppelte Anführungszeichen zu verwenden:
%Vor%
oder um sie einfach wegzulassen, da es in diesem Befehl keine Metazeichen gibt, die von %code% interpretiert würden.
Nachtrag
%code% ist nur ein wirklich beschwerliches Biest, für jeden, der an %code% -artige Granaten gewöhnt ist. Im Folgenden finden Sie einige weitere häufig auftretende Fehler und Problemumgehungen in Bezug auf %code% Aufruf.
%Vor%
___ tag123perl ___ Perl ist eine prozedurale, allgemeine Programmiersprache für allgemeine Zwecke, die für ihre native Unterstützung von regulären Ausdrücken und String-Parsing-Funktionen bekannt ist. Bitte verwenden Sie diesen Tag für Fragen zu Perl im Allgemeinen. Für Dinge, die mit der neuen (aber verwandten) Sprache "Perl 6" zu tun haben, verwenden Sie bitte das perl6-Tag. Verwenden Sie für reguläre Ausdrücke nach Perl-Art in anderen Sprachen das Regex-Tag oder, falls sie auf der PCRE-Bibliothek basieren, das PCRE-Tag.
___ antwort664549 ___
Die Antwort von ephemient fasst das Problem gut zusammen, aber Sie haben noch eine andere Möglichkeit: Ändern Sie Ihre Shell von %code% zu einer besseren Hülle. Wenn Sie eine Unix-Person sind, würde ich vorschlagen, Cygwin nachzuschlagen, die die Art von Umgebung bietet, die Sie gewohnt sind (zum Beispiel < a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29"> Bash und GNU-Hilfsprogramme).
Wenn Sie eine Windows-Person sind, würde ich vorschlagen, PowerShell ( geb. MSH geb. Monad). In der Tat würde ich vorschlagen, in PowerShell zu suchen, selbst wenn Sie eine Unix-Person sind. Es integriert sich in .NET und hat viele nette Features (wie Objekte, die durch Pipes statt einfacher Textzeilen geleitet werden). Wenn ich auf einem Microsoft-Betriebssystem feststecke, ist es die Shell, die ich verwenden würde.
Andere Shells für Windows, die die Leute zu mögen scheinen:
___ qstnhdr ___ Warum funktioniert mein Perl-Einzeiler nicht unter Windows?
___