Top-Themen

Aktuelle Themen (A bis Z)

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

Batch Variablenvergleich

Frage Entwicklung Batch & Shell

Mitglied: Zockerman

Zockerman (Level 1) - Jetzt verbinden

16.12.2010, aktualisiert 11:40 Uhr, 2741 Aufrufe, 5 Kommentare

Habe mal wieder ein Problem mit Batch

Hallo Liebe adminstrator.de-Gemeinde,

heute saß ich so rum und habe gedacht, ich schreibe ein Programm zum ver- und entschluesseln von Text. Gesagt getan. Es funktioniert auch alles. Nur eins nicht.
Der Verglech meiner 2 numerischen Variablen. Ich hab wirklich keine Ahnung woran das liegen kann.
Hier mein Code.
01.
@echo off & setlocal enabledelayedexpansion 
02.
IF "%1" == "" ( 
03.
echo Ziehen Sie die zu entschluesselnde .txt auf die Decrypt.bat 
04.
pause > Nul 
05.
exit 
06.
07.
set /p code1=<%cd%\Key\code 
08.
set /p a=<%cd%\Key\1 
09.
set /p b=<%cd%\Key\2 
10.
set /p c=<%cd%\Key\3 
11.
set /p d=<%cd%\Key\4 
12.
set /p e=<%cd%\Key\5 
13.
set /p f=<%cd%\Key\6 
14.
set /p g=<%cd%\Key\7 
15.
set /p h=<%cd%\Key\8 
16.
set /p i=<%cd%\Key\9 
17.
set /p j=<%cd%\Key\10 
18.
set /p k=<%cd%\Key\11 
19.
set /p l=<%cd%\Key\12 
20.
set /p m=<%cd%\Key\13 
21.
set /p n=<%cd%\Key\14 
22.
set /p o=<%cd%\Key\15 
23.
set /p p=<%cd%\Key\16 
24.
set /p q=<%cd%\Key\17 
25.
set /p r=<%cd%\Key\18 
26.
set /p s=<%cd%\Key\19 
27.
set /p t=<%cd%\Key\20 
28.
set /p u=<%cd%\Key\21 
29.
set /p v=<%cd%\Key\22 
30.
set /p w=<%cd%\Key\23 
31.
set /p x=<%cd%\Key\24 
32.
set /p y=<%cd%\Key\25 
33.
set /p z=<%cd%\Key\26 
34.
set /p A_g=<%cd%\Key\27 
35.
set /p B_g=<%cd%\Key\28 
36.
set /p C_g=<%cd%\Key\29 
37.
set /p D_g=<%cd%\Key\30 
38.
set /p E_g=<%cd%\Key\31 
39.
set /p F_g=<%cd%\Key\32 
40.
set /p G_g=<%cd%\Key\33 
41.
set /p H_g=<%cd%\Key\34 
42.
set /p I_g=<%cd%\Key\35 
43.
set /p J_g=<%cd%\Key\36 
44.
set /p K_g=<%cd%\Key\37 
45.
set /p L_g=<%cd%\Key\38 
46.
set /p M_g=<%cd%\Key\39 
47.
set /p N_g=<%cd%\Key\40 
48.
set /p O_g=<%cd%\Key\41 
49.
set /p P_g=<%cd%\Key\42 
50.
set /p Q_g=<%cd%\Key\43 
51.
set /p R_g=<%cd%\Key\44 
52.
set /p S_g=<%cd%\Key\45 
53.
set /p T_g=<%cd%\Key\46 
54.
set /p U_g=<%cd%\Key\47 
55.
set /p V_g=<%cd%\Key\48 
56.
set /p W_g=<%cd%\Key\49 
57.
set /p X_g=<%cd%\Key\50 
58.
set /p Y_g=<%cd%\Key\51 
59.
set /p Z_g=<%cd%\Key\52 
60.
set "datei=%1" 
61.
62.
 
63.
echo Es wird decodiert!! Bitte warten... 
64.
for /f %%i IN (%datei%) DO ( 
65.
IF "%%i"=="." ( 
66.
echo.|set /p=_t_>>tmp1 
67.
) ELSE ( 
68.
set "crypt_num=%%i" 
69.
set /a number = crypt_num / code1 
70.
echo !crypt_num! 
71.
call :decrypt 
72.
73.
IF "%%i"=="," echo. >>tmp1 
74.
75.
for /F "delims=" %%a in (tmp1) do ( 
76.
set "text=%%a" 
77.
set "text=!text: =!" 
78.
echo !text!>>tmp2 
79.
80.
for /F "delims=" %%a in (tmp2) do ( 
81.
set "text=%%a" 
82.
set "text=!text:_t_= !" 
83.
echo !text!>>decodiert.txt 
84.
85.
del tmp1 
86.
del tmp2 
87.
 
88.
Echo Decodierung abgeschlossen!! 
89.
pause > NUL 
90.
exit /b 
91.
 
92.
:decrypt 
93.
echo crypt_num: !crypt_num! 
94.
echo Code: !code1! 
95.
echo Number: !number! 
96.
echo A_g: !A_g! 
97.
echo B_g: !B_g! 
98.
echo C_g: !C_g! 
99.
echo D_g: !D_g! 
100.
echo E_g: !E_g! 
101.
echo F_g: !F_g! 
102.
echo G_g: !G_g! 
103.
IF !number! EQU !A_g! set "sign=A" & echo test1 
104.
IF !number! EQU !B_g! set "sign=B" & echo test1 
105.
IF !number! EQU !C_g! set "sign=C" & echo test1 
106.
IF !number! EQU !D_g! set "sign=D" & echo test1 
107.
IF !number! EQU !E_g! set "sign=E" & echo test1 
108.
IF !number! EQU !F_g! set "sign=F" & echo test1 
109.
IF !number! EQU !G_g! set "sign=G" & echo test1 
110.
IF !number! EQU !H_g! set "sign=H" & echo test1 
111.
IF !number! EQU !I_g! set "sign=I" & echo test1 
112.
IF !number! EQU !J_g! set "sign=J" & echo test1 
113.
IF !number! EQU !K_g! set "sign=K" & echo test1 
114.
IF !number! EQU !L_g! set "sign=L" & echo test1 
115.
IF !number! EQU !M_g! set "sign=M" & echo test1 
116.
IF !number! EQU !N_g! set "sign=N" & echo test1 
117.
IF !number! EQU !O_g! set "sign=O" 
118.
IF !number! EQU !P_g! set "sign=P" 
119.
IF !number! EQU !Q_g! set "sign=Q" 
120.
IF !number! EQU !R_g! set "sign=R" 
121.
IF !number! EQU !S_g! set "sign=S" 
122.
IF !number! EQU !T_g! set "sign=T" 
123.
IF !number! EQU !U_g! set "sign=U" 
124.
IF !number! EQU !V_g! set "sign=V" 
125.
IF !number! EQU !W_g! set "sign=W" 
126.
IF !number! EQU !X_g! set "sign=X" 
127.
IF !number! EQU !Y_g! set "sign=Y" 
128.
IF !number! EQU !Z_g! set "sign=Z" 
129.
IF !number! EQU !a! set "sign=a" 
130.
IF !number! EQU !b! set "sign=b" 
131.
IF !number! EQU !c! set "sign=c" 
132.
IF !number! EQU !d! set "sign=d" 
133.
IF !number! EQU !e! set "sign=e" 
134.
IF !number! EQU !f! set "sign=f" 
135.
IF !number! EQU !g! set "sign=g" 
136.
IF !number! EQU !h! set "sign=h" 
137.
IF !number! EQU !i! set "sign=i" 
138.
IF !number! EQU !j! set "sign=j" 
139.
IF !number! EQU !k! set "sign=k" 
140.
IF !number! EQU !l! set "sign=l" 
141.
IF !number! EQU !m! set "sign=m" 
142.
IF !number! EQU !n! set "sign=n" 
143.
IF !number! EQU !o! set "sign=o" 
144.
IF !number! EQU !p! set "sign=p" 
145.
IF !number! EQU !q! set "sign=q" 
146.
IF !number! EQU !r! set "sign=r" 
147.
IF !number! EQU !s! set "sign=s" 
148.
IF !number! EQU !t! set "sign=t" 
149.
IF !number! EQU !u! set "sign=u" 
150.
IF !number! EQU !v! set "sign=v" 
151.
IF !number! EQU !w! set "sign=w" 
152.
IF !number! EQU !x! set "sign=x" 
153.
IF !number! EQU !y! set "sign=y" 
154.
IF !number! EQU !z! set "sign=z" 
155.
echo !sign!. 
156.
echo.|set /p=!sign!>>tmp1 
157.
set number= 
158.
set sign= 
159.
goto :eof
Erklärung:
Zuerst werden die "Keys" geholt, die notwendig sind um das Ganze zu entschlüsseln. Das beruht darauf, dass jeder Buchstabe eine Zufallszahl bekommt. Zusätzlich wird noch ein Code generiert. Nun werden Buchstabe und Code multipliziert und heraus kommt unsere Variable crypt_num (was ich gerade beschreibe, tut eine andere Batch. Und zwar richtig)

Mein Problem liegt in dem letzten Block. Ich habe mir mal ein paar werte ausgeben lassen und tata.
!number! und !A_g! sind gleich. Aber wieso setzt er nicht sign auf A??

achja der text der hier verschluesselt worden ist ist "ABCDEFG" deshalb habe ich mir diese Buchstaben anzeigen lassen, damit ich manuell überprüfen kann ob das passt. Und wenn man sich es anschaut. es passt


Hier mal ein Bild von dem was passiert
64bafd2f7f397e63761f5a8cc807e3cd - Klicke auf das Bild, um es zu vergrößern
Mitglied: jeb-the-batcher
16.12.2010 um 15:21 Uhr
Hallo Zockerman,

schon erstaunlich wie kompliziert man ein einfaches Problem angehen kann!
Wie praktisch das der Schlüssel in 52 Datein verteilt wird.

Aber um zu deinem aktuellen Problem zu kommen, zum einen fehlt der Inhalt der 52 Dateien,
zum anderen tippe ich darauf, dass es nicht zu einem numerischen Vergleich kommt, weil in deinen Variabeln nämlich gar keine Zahl steht.
Ich vermute, dass am Ende noch ein Space hängt.

Ist aber leicht zu testen, einfach mal überall bei den Debugausgaben eine Raute dranhängen z.B. echo A_g: !A_g!#

Allerdings solltest du dir überlegen, ob das hier wohl der richtige Ansatz ist soviel Zeilen Code für ein paar Vergleiche zu verwenden.

Optimierte Grüße
jeb
Bitte warten ..
Mitglied: Zockerman
16.12.2010 um 18:06 Uhr
Hallo jeb

ich weiß, dass es viel zu viel Code ist und, dass ich die Zeilen kürzen kann, aber ich wollte zuerst die Intelligenz programmieren und dann das minimieren anfangen.

Vielen Dank für deine Hilfe. Nagut, dass mit dem Space konnte ich ja durch löschen von Werten in der Variable lösen.
Aber was meinst du damit, dass der Inhalt meiner 52 Dateien fehlt?

Da stehen immer nur eine Zahl zwischen 1-32765 halt 16 bit^^

Grüße
Zockerman
Bitte warten ..
Mitglied: Biber
16.12.2010 um 21:11 Uhr
Moin Zockerman,

Zitat von Zockerman:
Aber was meinst du damit, dass der Inhalt meiner 52 Dateien fehlt?

Da stehen immer nur eine Zahl zwischen 1-32765 halt 16 bit^^
Ich will da jeb-the-batcher nicht vorgreifen, aber es könnte sein, dass ihm die Verwendung eines Dateiformats vorschwebt,
das die Speicherung von noch mehr als einer Zahl zwischen 1 und 32767 unterstützt...

Ich sach' ma' so: Wenn doch ohnehin jede noch so kleine Datei auf den heutigen Speichermedien 16384 Byte belegt,
dann könntest du doch auch mehr als die bisher verbratenen max.7 Zeichen nutzen.

Oder halten dich dann deine Kumpels für ein wenig knauserig?

Grüße
Biber
Bitte warten ..
Mitglied: jeb-the-batcher
16.12.2010 um 23:53 Uhr
Danke Biber,

du hast meine Gedanken vollkommen richtig erraten.

Zitat von Zockerman:
Hallo jeb

ich weiß, dass es viel zu viel Code ist und, dass ich die Zeilen kürzen kann, aber ich wollte zuerst die Intelligenz
programmieren und dann das minimieren anfangen.

Uhh, da hab ich doch glatt auf dem Boden gelegen ... wenn das schon der intelligente Teil war ...

Aber mal im Ernst:
Man sollte den gesamten Schlüssel in eine Datei schieben z.B. einfach pro Key eine Zeile.
Dann kann man ganz toll mit einer FOR-Loop alle Schlüssel aus eben jener einlesen.

Wenn man dann noch statt einzelne Variablenamen zu vergeben ein (Pseudo)-Batcharray verwendet etwa key[0]=3542 (Schlüssel für A), key[1]=24020, ...
wird das Suchen und Vergleichen im Vergleich gleich viel leichter, könnte man halt Versuchen (was für ein schönes Wortspiel).

Zudem kann ich nicht ganz erkennen wozu aus dem Buchstabenraum (so in etwa 52 an der Zahl) auf den Raum 1 bis 32765 gemappt wird.
Genau genommen gibt es so ziemlich genau 52 Schlüssel, da kann man dann auch einfach die Zahlen aus 1 bis 52 als Schlüssel nehmen.

Aber Zockermann, mir gefällt der Ansatz, er zeigt den richtigen Weg und das Verständnis für die zu lösenden Probleme.

Grüße
jeb
Bitte warten ..
Mitglied: pieh-ejdsch
19.12.2010 um 15:40 Uhr
moin Zockerman,

nicht passend zur Überschrift aber bei dem worum es geht.
ein Ansatz für das kommplette Auslesen einer Zeichenfolge ( in einer zu de - codierenden Zeichenfolge / Datei ) ohne die Zeichenfolge in einzelne Zeilen in eine andere Datei zerlegen zu müssen ist hier beschrieben.

Es ging um diesen Atbash-Algorithmus

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Batch in batch in cfg schreiben
gelöst Frage von pixelBfBatch & Shell2 Kommentare

Hayy, ich bin neu hier im forum:)) Meine frage: Kann ich eine batch schreiben die was in eine batch ...

Batch & Shell
Wie ändert eine batch eine bestimmte zeile in einer anderen batch
Frage von J4YK0BBatch & Shell3 Kommentare

Wie schreibt eine batch eine andere batch um, aber nur eine SPEZIELLE zeile? Das System ist wiefolgt. Man gibt ...

Batch & Shell
Womit kann ich in einer Batch viertelstündlich eine andere Batch aufrufen?
Frage von red-eyeBatch & Shell16 Kommentare

Hallo allerseits! Seit drei Stunden versuche ich selbst einen geeigneten Befehl zu finden, bzw. hier im Forum eine Antwort ...

Batch & Shell
Batch bleibt hängen - wie kann die Batch neugestartet werden?
gelöst Frage von dax4funBatch & Shell6 Kommentare

Hi Leute , wieder ein Sonderfall habe eine Batch ständig am rennen im Hintergrund doch irgendwann bleibt sie hängen ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 10 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 11 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server12 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server12 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Netzwerkgrundlagen
Laufwerkszuordnung mit zwei IPs
Frage von Alex29Netzwerkgrundlagen11 Kommentare

Hallo in die Runde, Ich als Hobbyadmin hätte mal wieder eine Frage an die Profis. Ich habe ein Netzwerk ...