Ich nehme an, Sie dos/nt-batch verwenden.
Es ist möglich, mit dem Satz/p Befehl, weil set/p keine CrLf
set /p "=Executing backup...." <nul
echo OK
Auch druckt es ist möglich, die Leitung mit einem CR-Zeichen zu löschen. Es ist wichtig zu wissen, dass Leerzeichen an der Vorderseite eines Sets/p ignoriert werden (in Vista, nicht in XP), also das! Cr! muss später oder am Ende platziert werden. Ein CR kann nur mit delayedExpansion angezeigt werden, weil% cr% funktioniert, aber CR-Zeichen werden in der prozentualen Expansionsphase (oder direkt nach dieser Phase) entfernt, aber nicht in der verzögerten Expansionsphase.
Beispiel eines Zählers, der zur Anzeige von
@echo off
setlocal EnableDelayedExpansion EnableExtensions
call :CreateCR
for /l %%n in (1,1,10000) do (
set /P "=Count %%n!CR!" <nul
)
echo(
goto :eof
:CreateCR
rem setlocal EnableDelayedExpansion EnableExtensions
set "X=."
for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
echo !X! > %temp%\cr.tmp
echo\>> %temp%\cr.tmp
for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do (
endlocal
set cr=%%a
goto :eof
)
goto :eof
EDIT nur eine Zeile verwenden: Erläuterung, wie die Variable cr
erstellt wird (mit einem Trick Fertig)
Nach variable X
auf eine Einstellung, Einzelpunkt (das Zeichen selbst ist unwichtig), wird es wiederholt, um 8188 Zeichen über for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
Dann die va riablen, zwei Räume und sowohl ein CR und LF werden in eine Datei hallen mit echo !X! > %temp%\cr.tmp
(Beachten Sie die beiden Räume zwischen den !X!
und den >
und die natürlichen Zeilenenden Echo wieder gut intern)
Wir haben jetzt 8192 Zeichen, aber die Daten Der Puffer kann nur 8191 Zeichen enthalten, daher wird das letzte Zeichen (der Zeilenvorschub) gelöscht!
In der nächsten Zeile echo\>> %temp%\cr.tmp
, ein weiterer CR/LF
Satz an die Datei angehängt wird (die \
in dem Befehl zur Ausgabe nichts ist nur den Wagenrücklauf und Zeilenvorschub bar, wie echo
durch sie selbst ausgibt ECHO is ON/OFF
ist), das ist wichtig, als eine einzige CR
kann nicht am Ende einer Zeile (mehr später) gelesen werden.
So enthält die Datei jetzt <8188 .'s><SPACE><SPACE><CR><CR><LF>
Die for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do
das zweite Token liest, die delimters sind Standardraum und Reiter, so dass die zweite Token ist nur ein einziges CR
, wie die folgenden CR/LF
als Standardzeilenende entfernt wird.
Schließlich wird die endlocal
verwendet wird, ohne die temporären Variablen in eine Umgebung zurückzukehren X
, c
und a
bestehende (Wie bei den endlocal
in Klammern, es erlaubt die Einstellung von cr
vor den endlocal
nimmt tatsächlich am Ende der Klammern beeinflussen (könnte auch als for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do endlocal&set cr=%%a&goto :eof
geschrieben werden)
Zusätzlich
Dies war mein erster Weg, um ein CR-Zeichen zu schaffen, aber es braucht einige Zeit und eine temporäre Datei.
Später sah ich eine einfachere Methode zum Abrufen der CR aus einem copy /z
Befehl.
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
Welches Betriebssystem sind Sie? –
ja, Windows Server 2003, ich habe vergessen ... – aemme