HOWEVER (hier wird das '=' Teil der gültigen Dateinamen, wenn ich Anführungszeichen verwende):
H:\BUGS>ren a-b.txt a=b.txt The syntax of the command is incorrect. H:\BUGS>ren a-b.txt "a=b.txt" H:\BUGS>ren c "c=d.txt" H:\BUGS>dir 2016-03-13 19:54 6 a=b.txt 2016-03-13 19:54 12 c=d.txt
Ein Gleichheitszeichen ist ein gültiges Zeichen für den Dateinamen.
FWIW, es scheint, dass ein '=', das nicht in Anführungszeichen steht, in einer DOS-Befehlszeile eine bizarre spezielle Bedeutung hat.
OTOH, das '=' ist ein gültiges Zeichen für den Dateinamen.
UNTENLINIE: Es scheint, =als würde ein Trennzeichen als Trennzeichen fungieren. In einigen Fällen =führt dies zu einem Syntaxfehler, in anderen Fällen =handelt es sich lediglich um ein Gleichheitszeichen .
Ende bearbeiten # 2.
Die Suche nach einer Erklärung über Google war nicht erfolgreich; Während die Problemumgehung das Problem löst, ist es für mich wichtig, dies in der Dokumentation zu finden. Jede Hilfe wird geschätzt.
gerryLowry vor 8 Jahren
0
Entfliehen Sie dem `=` mit einem `^`. Zum Beispiel: `echo cde> c ^ = d.txt`.
Michael Frank vor 8 Jahren
0
@MichaelFrank ja, das funktioniert auch; Danke dir; Was ich jedoch wirklich wissen möchte, ist, warum sich dieses Verhalten so verhält. `=` ist nicht eines der hier aufgeführten Sonderzeichen "* [Namenskonventionen] (https://msdn.microsoft.com/en-ca/library/windows/desktop/aa365247 (v = vs.85) .aspx # naming_conventions) * "~~` <`(kleiner als); `>` (größer als); `:` (Doppelpunkt); `` (doppeltes Anführungszeichen); `/` (Schrägstrich); `\` (umgekehrter Schrägstrich); `|` (senkrechter Strich oder Pipe); `?` (Fragezeichen); `*` (Sternchen)
gerryLowry vor 8 Jahren
0
Siehe meine Antwort unten, aber im Grunde handelt es sich um ein Trennzeichen, das zum Trennen von Befehlen verwendet wird.
Michael Frank vor 8 Jahren
0
1 Antwort auf die Frage
0
Michael Frank
Das =Zeichen ist ein Trennzeichen, funktional scheint es einem Leerzeichen zu entsprechen . Wie Sie im folgenden Beispiel sehen können:
c:\NotBackedUp>echo abc>d efg.txt c:\NotBackedUp>type d abc efg.txt
Ebenso =wird das gleiche tun:
c:\NotBackedUp>echo abc>d=efg.txt c:\NotBackedUp>type d abc=efg.txt
Werfen wir einen Blick auf Ihren ersten Befehl: echo cde > c=d.txt
Zunächst starten Sie den echoBefehl und übergeben ihm einen Wert cde, der in die Datei eingefügt werden soll c. Da =ist ein Trennzeichen, und Sie haben nicht gesagt, echowo die nächste Zeichenfolge zu senden d.txt, wird standardmäßig die vorherige Datei: c.
Sie können dies umgehen, indem Sie entweder den Namen Ihrer Ausgabe angeben:
Vielen Dank für den Link zur Simon Sheppard-Site [ss64.com] (ss64.com) ... siehe meine Bearbeitung # 2. Sie haben Recht damit, dass * manchmal * `=` wie ein Trennzeichen wirkt. Für mich ist es überraschend, dass Microsoft dies nicht dokumentiert hat. Ich hätte es vorgezogen, Dokumentation von Microsoft gefunden zu haben. Trotzdem, weil die Website von Simon Sheppard mich zu einem besseren Verständnis verleitete, markiere ich Ihre Antwort als Antwort.
gerryLowry vor 8 Jahren
0