Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Zeichen (bsp x) nach Variablen-Anzahl setzen

Frage Entwicklung Batch & Shell

Mitglied: OKIDOKI

OKIDOKI (Level 1) - Jetzt verbinden

26.01.2012, aktualisiert 18.10.2012, 3475 Aufrufe, 8 Kommentare

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

01.
set #=%MyVar% 
02.
set length=0 
03.
 
04.
:loop 
05.
if defined # (set #=%#:~1%&set /A length += 1&goto loop) 
06.
>anzahl.txt echo %MyVar% 
07.
 
08.
???
Gruß OKIDOKI
Mitglied: bastla
26.01.2012 um 16:37 Uhr
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:
01.
@echo off & setlocal 
02.
set "#=%myVar%" 
03.
set /a length=0 
04.
 
05.
:loop 
06.
if defined # (set #=%#:~1% & set /a length+=1& goto loop) 
07.
 
08.
for /L %%i in (1,1,%length%) do <nul set /p=x 
09.
echo\ 
10.
echo Das war's.
Alternativ könntest Du einfach einen String mit der maximal möglichen Länge vorgeben, also
set "String=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
und danach das gewünschte Stück "abschneiden":
call set "TeilString=%%String:~-%length%%%"
Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
26.01.2012 um 17:06 Uhr
Hallo bastla,

mein Kopf ist verdreht, ich hole noch einmal aus:

In einer Datei *.txt steht eine Zahl (an einer bestimmten Stelle). Diese Zahl soll ausgelesen werden und die Zahl als Zeichen ausgegeben werden. Hierbei handelt es sich um die Anzahl eines Passwortes, das als xxxx angezeigt werden soll:

01.
@echo off &setlocal enabledelayedexpansion 
02.
for /f "usebackq delims=" %%i in ("pass.txt") do set Zeile=%%i & goto out 
03.
 
04.
:out 
05.
set len=%Zeile:~3,1% 
06.
... nun soll %len% als x-Zeichen ausgegeben werden!
Gruß OKIDOKI
Bitte warten ..
Mitglied: bastla
26.01.2012 um 17:09 Uhr
Hallo OKIDOKI!

Bis auf die Tatsache, dass die Länge nun eben nicht in %length%, sondern in %len% steht, sollten eigentlich beide Vorschläge oben passen ...

Grüße
bastla

P.S.: Das "goto out" ist sicher nicht nötig (und ein Sprung aus einer "for"-Schleife auch nicht empfehlenswert) ...
Bitte warten ..
Mitglied: OKIDOKI
26.01.2012 um 17:12 Uhr
... sag jetzt nichts bastla

01.
@echo off & setlocal 
02.
@echo off &setlocal enabledelayedexpansion 
03.
for /f "usebackq delims=" %%i in ("pass.txt") do set Zeile=%%i & goto out 
04.
 
05.
:out 
06.
set len=%Zeile:~3,1% 
07.
 
08.
for /L %%i in (1,1,%len%) do <nul set /p=x 
09.
echo\ 
10.
echo Das war's 
11.
Pause


Vielleicht noch die Frage, ob die Diskussion um ein Passowrtgenerator auf Batch-Basis weitergeführt werden soll (wie schon an anderer Stelle)? Ich behelfe mir mit Selbstgasteltem:
Passworteingabe, Zufallszahl, Passwort dahinter, weitere Zufallszahl -> dann Auslesen / Sicherheit ist natürlich nicht unendlich...

So long, danke bastla

OKIDOKI

PS: Oko, du warst schneller ...

01.
@echo off & setlocal 
02.
@echo off &setlocal enabledelayedexpansion 
03.
for /f "usebackq delims=" %%i in ("pass.txt") do set Zeile=%%i 
04.
 
05.
set len=%Zeile:~3,1% 
06.
 
07.
for /L %%i in (1,1,%len%) do <nul set /p=x 
08.
echo\ 
09.
echo Das war's 
10.
Pause
Bleibt für mich noch die Frage, wie ich den Sprung aus der for-Schelife rausbekomme...
Bitte warten ..
Mitglied: bastla
26.01.2012 um 17:18 Uhr
Hallo OKIDOKI!
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
Alternative:
01.
set "Zeile=" 
02.
for /f "usebackq delims=" %%i in ("pass.txt") do if not defined Zeile set "Zeile=%%i"
Im bisher geposteten Teil gibt es übrigens noch keine Notwendigkeit für "delayedExpansion" - Du könntest daher vorläufig die Zeile 2 ersatzlos streichen ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
26.01.2012 um 20:35 Uhr
Hallo bastla,

klappt super!
Allerdings habe ich es ausprobiert ""delayedExpansion" zu streichen. Aber dann hat es nicht funktioniert ...
Erste Zeile der txt: 9408di;M;bg6sU6dy ... Ausgegebene Meldung: !Zeile:~944,8! Hat das etwas mit dem Anfang der Zeile zu tun?
Warum es stehen bleiben muss, weiß ich aber nicht!

PS: Könntest du mir noch die Funktion von echo\ deiner o.g. Formel erklären?


Gruß
OKIDOKI
Bitte warten ..
Mitglied: bastla
26.01.2012, aktualisiert 18.10.2012
Hallo OKIDOKI!
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ür
echo.
oder
echo\
oder
echo(
verwendest, ist (fast) egal ...
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
Bitte warten ..
Mitglied: OKIDOKI
26.01.2012 um 21:23 Uhr
Hallo bastla,

ich muss noch viel lernen - eijajeijajei!

Herzlichen Dank!
OKIDOKI
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch for f Befehl erkennt doppelte Zeichen als eines (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...