Batch Variablen editieren

Erik1

Newbie
Registriert
Juli 2015
Beiträge
4
Mahlzeit,

Mein Programm wird einen Text in ASCII codieren und diesen dann als DUALcode ausgeben.
Dazu muss ich die länge des Textes herausfinden. Dass mache ich mit diesem Befehl:

/*
set Tro=HAS
echo %Tro%>%userprofile%\getlen.tmp
for %%i in ("%userprofile%\getlen.tmp") do set /a "theLen=%%~zi-2" & del %userprofile%\getlen.tmp
echo MSG Laenge von %Tro% ist %theLen%
*/

Anschließend soll die Variable "theLen" auf die erste Stelle gekürtzt werden. In dem Fall wäre es "H". Dazu mache ich:

/*
set /A wert=%theLen%-1
set Tro=%Tro:~-%wert%
echo %Tro%
*/

leider kommt nicht der erste Buchstabe raus sondern der Befehl ohne Prozentzeichen: "Tro:~-2"
Gebe ich statt "set Tro=%Tro:~-%wert%" "set Tro=%Tro:~-2" ein wird das gewünschte "H" ausgegeben.

Da ich aber im laufe des Programms die Variable "wert" verändere kann ich sie nicht durch feste Werte ersetzen.
Ich hoffe ihr könnt mir helfen, denn ich bin überfragt und nach mehreren stunden suchen denke ich dass von Google auch.

Danke schon mal.

Mit freundlichen Grüßen
Erik
 
Erik1 schrieb:
Mein Programm wird einen Text in ASCII codieren und diesen dann als DUALcode ausgeben.
Dazu muss ich die länge des Textes herausfinden. Dass mache ich mit diesem Befehl:

Wie sieht denn der Text vorher aus und wie muss er nachher genau aussehen?
 
Hi, die Länge kannst du per:
Code:
@echo off
set String=HAS
for /f delims^= %%i in ('cmd /u /von /c "echo %String%"^|find /v ""^|findstr .^|find /c /v ""') do set /a Stringlength = %%i
echo Stringlaenge von '%String%' ist %Stringlength%
pause
ermitteln und dann zuschneiden wenn nötig.
 
blöderidiot schrieb:
Wie sieht denn der Text vorher aus und wie muss er nachher genau aussehen?

Vorher ist relativ egal, aber als beispiel jetzt mal "Hallo, wie gehts". Für die leerzeichen habe ich mir noch nichts überlegt, denn die kann man nicht richtig speichern und vergleichen auch nicht.
Dass "set Tro=HAS" wird später "set /p Tro=" heißen, dass war nur zu Testzwecken.

Nachher wird jeder einzellne Buchstabe umgewandelt. Bsp. A = 01000001 usw.
Bei Hallo sieht es dann so aus: 0100100001100001011011000110110001101111
Groß- und Kleinschreibung wird berücksichtigt. Jede Ziffer bzw. Sonderzeichen besteht aus einem Byte also leicht Realisierbar soblad die Variable "Tro" in einzelne Buchstaben zerlegt wurde.

@Mikasa123456789:

Nein leider nicht, bei mir wird dann nur "ECHO ist ausgeschaltet (OFF)." angezeigt
Ergänzung ()

Entilzha schrieb:
Hi, die Länge kannst du per:
Code:
@echo off
set String=HAS
for /f delims^= %%i in ('cmd /u /von /c "echo %String%"^|find /v ""^|findstr .^|find /c /v ""') do set /a Stringlength = %%i
echo Stringlaenge von '%String%' ist %Stringlength%
pause
ermitteln und dann zuschneiden wenn nötig.

Danke, hierdurch wird der Text etwas verkürtzt.
Allerdings bin ich immer noch beim alten Problem,
ich kann die Variable nicht mit einer anderen variable kürzen die den z.B. den Wert 2 enthält.

Aber danke für eure bemühungen (-:
 
habs aus den kopf gemacht, nur ersten zeichen sollte so irgendwie gehen, set erstesZeichen= %theLen:~0,1%
 
Mikasa123456789 schrieb:
habs aus den kopf gemacht, nur ersten zeichen sollte so irgendwie gehen, set erstesZeichen= %theLen:~0,1%

funktioniert!
danke!

falls ich nochmal was brauche melde ich mich. :D
 
Wie wäre es per:
Code:
@echo off
set str=wow
setlocal enabledelayedexpansion
::1.Buchstaben extrahieren
set str1=%str:~0,1%
echo %str1%

::1es Buchstabe als Binärcode umwandeln
for %%a in ("a=01100001" "b=01100010" "c=01100011" "d=01100100" "e=01100101" "f=01100110" "g=01100111" "h=01101000" "i=01101001" "j=01101010" "k=01101011" "l=01101100" "m=01101101" "n=01101110" "o=01101111" "p=01110000" "q=01110001" "r=01110010" 
"s=01110011" "t=01110100" "u=01110101" "v=01110110" "w=01110111" "x=01111000" "y=01111001" "z=01111010") do ( 
    set "str1=!str1:%%~a!" 
) 
echo %str1%
pause

Hier noch eine gute Maschine zum umwandeln...
 
Ja, die seite kenne ich bereits. Von der stammt auch mein Codiertes "Hallo" ^^
Aber danke für den Code, mit "for" kenne ich mich schlecht aus, dass dürfte mir viele Zeilen ersparen.
 
Zurück
Oben