Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 2730 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
gelöst Batch und Powershell (2)

Frage von michi-ffm zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch minimiert starten (3)

Frage von pdiddo zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch : alle Dateien eines Ordners bearbeiten (1)

Frage von deguonkel zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(6)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

Windows 10
Windows 10 Ordnerfreigabe (14)

Frage von Xaero1982 zum Thema Windows 10 ...