2016-06-16 15 views
1

Ich habe folgende .batWindows-Batch - ECHO verändert die% Error-%

echo about to start echoing, Errorlevel=%Errorlevel% 

echo. >> ../time.txt 

echo Just echod a new line into time.txt, Errorlevel=%Errorlevel% 

echo | set/p=start=%time%, >> ../time.txt  

echo about to start with emake, Errorlevel=%ERRORLEVEL% 

Der Ausgang Snippet ist:

about to start echoing, Errorlevel=0 
Just echod a new line into time.txt, Errorlevel=0 
about to start with emake, Errorlevel=1 

Warum ist die Linie echo | set/p=start=%time%, >> ../time.txt die %ERRORLVEL% zu ändern?

+0

Es ist nicht "echo"; es ist 'set'command falsche Syntax; Verwende echo | set/p start =% zeit%, >> ../ time.txt' – JosefZ

Antwort

3

Diese Zeile setzt ERRORLEVEL auf 1, weil SET /P fehlschlägt (setzt ERRORLEVEL auf 1), wenn ein Wert nicht festgelegt werden kann, und set/p=start=%time%, wird nie einen Wert festlegen. Alles nach der ersten = wird als Eingabeaufforderung betrachtet, daher gibt es keine Variable, und der Befehl wird immer "fehlschlagen".

Ich habe keine Ahnung, was Sie mit dieser Linie zu tun versuchen, also kann ich Ihnen keine Lösung geben. Aber eine Sache, die Sie beachten sollten - SET /P is useless for setting variables if used within a pipe.

+0

Ich versuche nicht etwas einzustellen. Stattdessen benutze ich dieses Konstrukt - von einem Stack-Post - um in der Lage zu sein, ohne Zeilenumbruch zu "echo". – Adrian

+0

Ich habe den% ERRORLEVEL% über 'echo | set/p start =% time%, >> ../ time.txt' und es gibt immer noch in der gleichen Zeile aus, wie ich es brauche. – Adrian

Verwandte Themen