Per Batch Den Buchstaben in einer Variable herausfinden und ihr einen speziellen Code zuweisen
for /f "usebackq" %%a in (./Letter1.txt) do set Letter1=%%a
damit lese ich aus einer Textdatei ein Buchstaben aus, das Script soll dann den Buchstaben in der Variable durch den Passenden Code aus dieser Tabelle ersetzen und dies dann in die erste Zeile einer Textdatei Schreiben. Dann soll es sich den 2. Buchstaben aus der Textdatei raussuchen und das selbe machen, den Code dann in die 2. Zeile schreiben. da die Textdatei mit den Buchstaben nur 5 Buchstaben enthält muss das natürlich auch nur 5x durchlaufen. hier mal die Tabelle, hab den namen davon vergessen aber wenigstens hab ich den Inhalt :D
die Tabelle:
00011 A
11001 B
01110 C
01001 D
00001 E
01101 F
11010 G
10100 H
00110 I
01011 J
01111 K
10010 L
11100 M
01100 N
11000 O
10110 P
10111 Q
01010 R
00101 S
10000 T
00111 U
11110 V
10011 W
11101 X
10101 Y
10001 Z
Könnt ihr mir da weiterhelfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305925
Url: https://administrator.de/contentid/305925
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
27 Kommentare
Neuester Kommentar
Und in der Textdatei stehen die 5 Buchstaben jeweils in einer eigenen Zeile, oder alle in einer hintereinander ??
Falls sie untereinander stehen
Gruß skybird
Falls sie untereinander stehen
@echo off
for /f "tokens=1" %%a in (.\Letters.txt) do @(
>>".\newfile.txt" (for /f "tokens=1" %%b in ('type .\tabelle.txt ^| findstr /i "%%a"') do echo %%b)
)
Zitat von @PinkFLuffyUnicorn:
wo muss ich dann die tabelle einfügen das das script diese benutzen kann?
In eine Textdatei tabelle.txt einfügen.wo muss ich dann die tabelle einfügen das das script diese benutzen kann?
Oberes ist aber für untereinander, für nebeneinander musst du entweder die Länge entweder vorher kennen oder sie eben erst per Skript ermitteln.
Oder so
Grüße
rubberman
@echo off &setlocal
for %%i in (
"00011 A"
"11001 B"
"01110 C"
"01001 D"
"00001 E"
"01101 F"
"11010 G"
"10100 H"
"00110 I"
"01011 J"
"01111 K"
"10010 L"
"11100 M"
"01100 N"
"11000 O"
"10110 P"
"10111 Q"
"01010 R"
"00101 S"
"10000 T"
"00111 U"
"11110 V"
"10011 W"
"11101 X"
"10101 Y"
"10001 Z"
) do for /f "tokens=1*" %%j in (%%i) do set "char%%k=%%j"
<"letter1.txt" set /p "line="
setlocal EnableDelayedExpansion
>"newfile.txt" (
for /f %%i in ('cmd /u /von /c "echo !line!"^|find /v ""') do echo !char%%i!
)
rubberman
Und noch eine Variante, wenn sie in einer Zeile stehen
Inhalt der .\Letters.txt:
Inhalt von .\tabelle.txt
Ausgabe nach ausführen des Skripts in .\newfile.txt:
@echo off & setlocal enabledelayedexpansion
set /p zeile=<".\Letters.txt"
REM Länge der Variablen ermitteln
call :strLength strLen "%zeile%"
set /a strLen-=1
>".\newfile.txt" (for /L %%a in (0 1 !strLen!) do (
if "!zeile:~%%a,1!" NEQ " " (
for /f "tokens=1" %%b in ('type ".\tabelle.txt" ^| findstr /i "!zeile:~%%a,1!" 2^>nul') do echo %%b
) else ( echo. )
))
goto :eof
REM Makro zum ermitteln der Länge einer Variablen
:strLength
set "#=%~2"
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"
goto :eof
Hallo das ist ein Test
00011 A
11001 B
01110 C
01001 D
00001 E
01101 F
11010 G
10100 H
00110 I
01011 J
01111 K
10010 L
11100 M
01100 N
11000 O
10110 P
10111 Q
01010 R
00101 S
10000 T
00111 U
11110 V
10011 W
11101 X
10101 Y
10001 Z
10100
00011
10010
10010
11000
01001
00011
00101
00110
00101
10000
00001
00110
01100
10000
00001
00101
10000
:eof = End of File
Nach einem call einer subroutine springt eof aber nur zurück zum Ausgangspunkt des call-Aufrufs. In meinem Skript war :strLength die "Subroutine". Ansonsten springt eof ans Ende des Skripts.
Nach einem call einer subroutine springt eof aber nur zurück zum Ausgangspunkt des call-Aufrufs. In meinem Skript war :strLength die "Subroutine". Ansonsten springt eof ans Ende des Skripts.
Zitat von @PinkFLuffyUnicorn:
wenn ich es jetzt zurücksetzen will, also aus dem Binärcode wieder buchstaben machen will, was muss ich dann in dem script ändern?
Das ganze rückwärts, also mit einer FOR-Scheife über alle Zeilen der Datei mit den Binärcodes gehen, und in dieser Schleife mit einer weiteren per findstr stattdessen das zweite Token aus der Tabelle nehmen...wenn ich es jetzt zurücksetzen will, also aus dem Binärcode wieder buchstaben machen will, was muss ich dann in dem script ändern?
Etwa so:
@echo off & setlocal enabledelayedexpansion
set ergebnis=
for /f "tokens=1,2 delims=:" %%a in ('findstr /rn "^" ".\newfile.txt"') DO (
if "%%b" NEQ "" (
for /f "tokens=2" %%c in ('findstr /ic:"%%b" ".\tabelle.txt" 2^>nul') do set "ergebnis=!ergebnis!%%c"
) else (
set "ergebnis=!ergebnis! "
)
)
echo !ergebnis!
pause
p.s. Deine Shift-Taste ist kaputt.
Jetzt hat sie zusätzlich auch noch eine Insuffizienz von unregelmäßigen Verben .
Weil mein Skript das nur auf der Konsole ausgibt deswegen :-P
Mensch, kauf die mal ein paar Buchstaben Batch ...
Zum auskommentieren macht man nicht einfach einen Buchstaben weg sondern setzte ein REM vor die Zeile aber dann entfernst du das Delayedexpansion und das wird in diesem Skript benötigt.
Wenn du nicht weist was du tust lass es, Skript geht hier problemlos, und wie gesagt: Der Inhalt wird im Beispiel einfach nur für dich auf der Konsole angezeigt !!
Setz im obigen Skript einfach eine Pause am Ende dann siehst du es wenn du das Skript per Doppelklick öffnest.
Mensch, kauf die mal ein paar Buchstaben Batch ...
Zum auskommentieren macht man nicht einfach einen Buchstaben weg sondern setzte ein REM vor die Zeile aber dann entfernst du das Delayedexpansion und das wird in diesem Skript benötigt.
Wenn du nicht weist was du tust lass es, Skript geht hier problemlos, und wie gesagt: Der Inhalt wird im Beispiel einfach nur für dich auf der Konsole angezeigt !!
Setz im obigen Skript einfach eine Pause am Ende dann siehst du es wenn du das Skript per Doppelklick öffnest.
in der "newfile.txt" sollten die binären Codes untereinander stehen, diese wird eingelesen.
Geht hier einwandfrei, my lord, you are making a mistake ....
Ich bin jetzt raus, ist alles geklärt.
ciao
Geht hier einwandfrei, my lord, you are making a mistake ....
Ich bin jetzt raus, ist alles geklärt.
ciao
Nicht suchen, LESEN und LERNEN!!
https://en.m.wikibooks.org/wiki/Windows_Batch_Scripting
https://en.m.wikibooks.org/wiki/Windows_Batch_Scripting