Batch Zeichen (bsp x) nach Variablen-Anzahl setzen
Guten Tag,
nach schon einigen Fragen und vielen gefundenen Anworten bin ich von diesem Forum total begeistert! Das Beste was es gibt in dieser Art!
Nach der Feststellung der Länge einer Variable (die dann als Zahl in einer Datei gespeichert wird) möchte ich die Anzahl als Zeichen x anzeigen lassen.
Also: Eingabe: Wort = 4 (Zeichen) in *.txt, dann 4 (Variable) auslesen und anzeigen als: xxxx
Gruß OKIDOKI
nach schon einigen Fragen und vielen gefundenen Anworten bin ich von diesem Forum total begeistert! Das Beste was es gibt in dieser Art!
Nach der Feststellung der Länge einer Variable (die dann als Zahl in einer Datei gespeichert wird) möchte ich die Anzahl als Zeichen x anzeigen lassen.
Also: Eingabe: Wort = 4 (Zeichen) in *.txt, dann 4 (Variable) auslesen und anzeigen als: xxxx
set #=%MyVar%
set length=0
:loop
if defined # (set #=%#:~1%&set /A length += 1&goto loop)
>anzahl.txt echo %MyVar%
???
Gruß OKIDOKI
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179621
Url: https://administrator.de/forum/batch-zeichen-bsp-x-nach-variablen-anzahl-setzen-179621.html
Ausgedruckt am: 06.04.2025 um 02:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo OKIDOKI!
So ganz klar ist mir Dein Vorhaben nicht ...
Wozu soll (abgesehen davon, dass Deine Zeile 6 das ursprüngliche Wort schreibt) die Länge in die Datei geschrieben werden, bzw was willst Du letztlich erreichen?
Dein bisheriger Ansatz ermittelt ja schon die Zeichenanzahl - wenn dann ein String aus lauter "x" mit der Länge der gefundenen Anzahl nur ausgegeben werden soll, könnte das zB so gehen:
Alternativ könntest Du einfach einen String mit der maximal möglichen Länge vorgeben, also
und danach das gewünschte Stück "abschneiden":
Grüße
bastla
So ganz klar ist mir Dein Vorhaben nicht ...
Wozu soll (abgesehen davon, dass Deine Zeile 6 das ursprüngliche Wort schreibt) die Länge in die Datei geschrieben werden, bzw was willst Du letztlich erreichen?
Dein bisheriger Ansatz ermittelt ja schon die Zeichenanzahl - wenn dann ein String aus lauter "x" mit der Länge der gefundenen Anzahl nur ausgegeben werden soll, könnte das zB so gehen:
@echo off & setlocal
set "#=%myVar%"
set /a length=0
:loop
if defined # (set #=%#:~1% & set /a length+=1& goto loop)
for /L %%i in (1,1,%length%) do <nul set /p=x
echo\
echo Das war's.
set "String=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
call set "TeilString=%%String:~-%length%%%"
bastla
Hallo OKIDOKI!
Alternative:
Im bisher geposteten Teil gibt es übrigens noch keine Notwendigkeit für "
Grüße
bastla
Bleibt für mich noch die Frage, wie ich den Sprung aus der for-Schelife rausbekomme...
Soferne Du nur die erste Zeile der Datei benötigst, einfach:set /p Zeile=<pass.txt
set "Zeile="
for /f "usebackq delims=" %%i in ("pass.txt") do if not defined Zeile set "Zeile=%%i"
delayedExpansion
" - Du könntest daher vorläufig die Zeile 2 ersatzlos streichen ...Grüße
bastla
Hallo OKIDOKI!
oder
oder
verwendest, ist (fast) egal ...
Grüße
bastla
Könntest du mir noch die Funktion von echo\ deiner o.g. Formel erklären?
Da die Ausgabe der einzelnen "x" jeweils ohne Zeilenumbruch durchgeführt wird, muss am Ende noch einer her - ob Du dafürecho.
echo\
echo(
Ausgegebene Meldung: !Zeile:~944,8! Hat das etwas mit dem Anfang der Zeile zu tun?
Wenn Du keine "delayedExpansion
" verwendest (meine Anmerkung war nur auf den hier geposteten Schnipsel bezogen), musst Du natürlich die Variablenschreibweise mit %
und nicht mit !
vornehmen ...Grüße
bastla