130834
Goto Top

Linie mit Leer überschreiben (Batch)

Hey ihr Batch-ler da draußen!

Ich entwickle grad meinen Eigenen Batch Safe auf Professionellem Level, also ECHTE Verschlüsselungen ( Extra-Tools ) mit Passwörtern und User Accounts und allem, so dass Dateien am Ende wirklich sicher sind, und nur wer das Passwort weiß kann sie Entschlüsseln, da das Passwort nirgendswo gespeichert wird, sondern die Dateien in einem zip Safe abgelegt werden... und ach ja mein Problem.

Um den Bildschirm weniger flashig und nervig und so zu machen, wenn man gerade Hochqualitative Auswahlmenüs verwendet, und weil ich das Programm-logo überall drin habe, verwende ich Graphic.exe um nur bestimmte Teile des Bildschirms zu aktualisieren, kurz einfach überschreiben, und verwende kein CLS.

Jetzt habe ich ein paar Probleme damit eine Einzelne Linie zu Leeren.
Manchmal muss ich das da ich nicht weiß was da gerade steht (Nutzername, Passwörter und so ) und die Länge nicht bestimmen kann/will.
Zuerst habe ich einfach den DELETE Character von ASCII in einer Variable gespeichert und ganz viele Leerzeichen sowie a!CR! am Anfang damit es überhaupt ausgegeben wird.
Das habe ich dann überall im ganzen Skript verwendet und einfach immer kopiert.
Dann wurde mir das zuviel und ich hab das ganze in eine variable gesetzt um den Code ordentlicher zu machen und nur noch die variable hingeschrieben.
Problem: Das funktioniert nicht. das a wird trotzdem geschrieben. Kann sein das der DELETE Charakter in der variable nicht wirkt, nicht geschrieben wird, nicht verwendet wird, was auch immer.
Funktioniert auch nicht wenn ich %% anstatt !! verwende, Erstaunlicherweise.
Die Frage ist jetzt: Wie krieg ich das in eine Variable und kann nur diese schreiben lassen kann und nicht 103 Leerzeichen überall im ganzen Skript haben, welche ich ständig kopieren muss?

Warte auf eure Kreativen Ideen

lg clragon

Content-Key: 324858

Url: https://administrator.de/contentid/324858

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: rubberman
rubberman 26.12.2016 um 00:03:28 Uhr
Goto Top
Hallo clragon.

Testweise
@echo off &setlocal EnableDelayedExpansion
for /f "tokens=2,3 delims=# " %%a in (  
  'prompt $H#^&for /f %%b in ^('copy /z "%~f0" nul'^) do %%b# 2^>nul'  
) do set "del=set /p "=%%a%%b                        %%b""  

set /p "=Hallo Welt^!" <nul  
timeout /t 2 /nobreak >nul
!del!<nul
set /p "=Hello, World^!" <nul  
pause >nul
%%a Backspace (funktioniert als erstes Zeichen bei der SET /P Ausgabe)
%%b Carriage Return

Grüße
rubberman
Mitglied: 130834
130834 27.12.2016 um 13:55:24 Uhr
Goto Top
Nett. Funktioniert gut. Danke.
Könnte ich das bitte vereinfacht ohne Carriage Return haben?
Er wird nicht benötigt, da ich mit Graphic.exe die Cursor Position schon auf X=0 setzte.
Mitglied: rubberman
Lösung rubberman 27.12.2016 um 23:32:57 Uhr
Goto Top
for /f %%a in ('"prompt $H &for %%b in (1) do rem"') do set "del=set /p "=%%a                        "<nul"  
...
%del%
So?
%%a ist nach wie vor ein Backspace. Da du "del" nun in Prozentzeichen verarbeiten kannst, kann auch das "<nul" mit in die Variable ...

Grüße
rubberman