Erklärung von DOS Kommandos
Hallöchen
Ich habe aus einem anderen Tread hier aus dem Forum eine funktionierende Batch Datei für meine Zwecke gefunden und so bearbeitet, wie es mir mit meinem Wissen möglich war. Nun möchte ich aber gerne verstehen was dort eigentlich getan wird. Ich bin in der Programierer Welt noch ziemlich neu und habe früher nur in C Programmiert (Grundkenntnisse). Somit sind mir einige Befehle schon bekannt. Jedoch nicht alle. Mit der help funktion in der cmd habe ich ebenfalls keine Erleuchtung gefunden °~°
Hier ist einmal der Inhalt der Batch Datei:
Wäre Super wenn Ihr mir Zeile 4 - 9 erklären könntet
Mit freundlichen Grüßen.
Ich habe aus einem anderen Tread hier aus dem Forum eine funktionierende Batch Datei für meine Zwecke gefunden und so bearbeitet, wie es mir mit meinem Wissen möglich war. Nun möchte ich aber gerne verstehen was dort eigentlich getan wird. Ich bin in der Programierer Welt noch ziemlich neu und habe früher nur in C Programmiert (Grundkenntnisse). Somit sind mir einige Befehle schon bekannt. Jedoch nicht alle. Mit der help funktion in der cmd habe ich ebenfalls keine Erleuchtung gefunden °~°
Hier ist einmal der Inhalt der Batch Datei:
@echo off & setlocal enabledelayedexpansion
del C:\pcliste.txt 2>&1>nul
del C:\tvids.txt 2>&1>nul
for /L %%A in (0,1,254) do (
for /F "tokens=3 delims= " %%B in ('tracert -h 1 -w 100 192.168.101.%%A ^| find "Routenverfolgung"') do @echo %%B >> c:\pcliste.txt )
For /F %%a in (c:\pcliste.txt) do (
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKEY_LOCAL_MACHINE\Software\Wow6432Node\Teamviewer\Version4" /V "ClientID"') do (set /a "LAD=%%j" set /a "LAD=%%j" & @echo %%a !LAD! >> c:\tvids.txt)
)
type C:\tvids.txt
pause
Wäre Super wenn Ihr mir Zeile 4 - 9 erklären könntet
Mit freundlichen Grüßen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 253130
Url: https://administrator.de/contentid/253130
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
7 Kommentare
Neuester Kommentar
Morgen,
hier findest du ein schöne Tutorial: Tutorial zur FOR-Schleife
Liebe Grüße
ITvortex.
PS: Falls dann noch erklärungsbedarf ist bescheid geben
hier findest du ein schöne Tutorial: Tutorial zur FOR-Schleife
Liebe Grüße
ITvortex.
PS: Falls dann noch erklärungsbedarf ist bescheid geben
cmd:
Liebe Grüße
ITvortex
set /?
Die /A-Option gibt an, dass die Zeichenfolge rechts vom Gleichheitszeichen
ein numerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogramm
des Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrer
Anordnung mit abnehmendem Vorrang:
() - Gruppierung
! ~ - - monäre Operatoren
* / % - arithmetische Operatoren
+ - - arithmetische Operatoren
<< >> - logische Verschiebung
& - bitweise UND
^ - bitweise exklusives ODER
| - bitweise ODER
= *= /= %= += -= - Zuordnung
, - Trennzeichen für Ausdrücke
Wenn Sie einen der arithmetischen oder Moduloperatoren verwenden, müssen
Sie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen. Alle
nicht-numerischen Zeichenfolgen im Ausdruck werden als Zeichenfolgen von
Umgebungsvariablen behandelt, deren Werte vor der Verwendung in Zahlen
konvertiert werden. Wenn eine Umgebungsvariable angegeben wird, die nicht
definiert ist, wird für diese der Wert Null verwendet. Somit können Sie
mit Umgebungsvariablen Berechnungen vornehmen, ohne %-Zeichen einzugeben,
um deren Werte zu erhalten. Wenn der Befehl SET /A von der Befehlszeile,
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert
eine Umgebungsvariable auf der linken Seite des Operators. Numerische Werte
stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für
hexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktale Zahlen. Damit
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktale
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,
da 8 und 9 keine erlaubten oktalen Ziffern sind.
Liebe Grüße
ITvortex
Hallo,
das macht für mich so auch keinen Sinn und (ungetestet) würde ich fast behaubten das Du da auch eine Fehlermeldung sehen müstest.
Was hier passiert wäre dann ein speichern des entsprechenden Registryeintrags in der Variabeln %%j.
Dann wird durch:
di eVariable LAD kanns tdu dann normalerweise mit %LAD% abrufen. Dies funktioniert allerdings nicht innerhalb einer Schleife. Daher wurde hier in Zeile 1 setlocal enabledelayedexpansion ausgeführt wodurch dies dann mmöglich wird. Dafür musst Du dann allerdings nicht %LAD% sondern !LAD! benutzen.
Das Echo gibt dann also den jeweiligen eintrag aus pcliste.txt zusammen mit dem zugehörigen registry Eintrag LAD aus.
Da LAD anschließend nicht mehr vernwendet wird kannst du dir das Ganze mit !LAD! aber auch spaaren und direkt %%J benutzen. Das würde dann so ausehen:
das macht für mich so auch keinen Sinn und (ungetestet) würde ich fast behaubten das Du da auch eine Fehlermeldung sehen müstest.
set /a "LAD=%%j" set /a "LAD=%%j"
ist einfach nur doppelt und du kannst das erste weglassen.Was hier passiert wäre dann ein speichern des entsprechenden Registryeintrags in der Variabeln %%j.
Dann wird durch:
set /a "LAD=%%j" & @echo %%a !LAD! >> c:\tvids.txt
der Eintrag %%J in LAD hinterlegt.di eVariable LAD kanns tdu dann normalerweise mit %LAD% abrufen. Dies funktioniert allerdings nicht innerhalb einer Schleife. Daher wurde hier in Zeile 1 setlocal enabledelayedexpansion ausgeführt wodurch dies dann mmöglich wird. Dafür musst Du dann allerdings nicht %LAD% sondern !LAD! benutzen.
Das Echo gibt dann also den jeweiligen eintrag aus pcliste.txt zusammen mit dem zugehörigen registry Eintrag LAD aus.
Da LAD anschließend nicht mehr vernwendet wird kannst du dir das Ganze mit !LAD! aber auch spaaren und direkt %%J benutzen. Das würde dann so ausehen:
FOR /F "skip=2 tokens=2*" %%i IN ('reg query "\\%%a\HKEY_LOCAL_MACHINE\Software\Wow6432Node\Teamviewer\Version4" /V "ClientID"') do (echo %%a %%J >> c:\tvids.txt)