138701
29.05.2019
1738
19
0
Script nicht verstanden
Hallo zusammen,
Könnte mir jemand das nachfolgende Script erklären?
Könnte mir jemand das nachfolgende Script erklären?
@echo off&setlocal enableDelayedExpansion
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "DEL=%%a %%a"
set text=text:
<nul >"%temp%\'" set /p "=."
call :c&set /p id=
:c
':
cd \
for /f delims^=^ eol^= %%s in ("%text%") do (
>colorPrint.txt (echo %text%\..\')
findstr /a:0B /f:colorPrint.txt "."
<nul set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%"
)
exit /b
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 456920
Url: https://administrator.de/contentid/456920
Ausgedruckt am: 24.11.2024 um 21:11 Uhr
19 Kommentare
Neuester Kommentar
Hallo,
Gruß,
Peter
Zitat von @SomebodyToLove:
Geh davon aus das der TO den Code irgendwo im Internet gefunde hat, es geschafft hat diesen zu kopieren, aber keine Ahnung hat was der tut, und grundsätzlich keine Quellen preisgibt. Typisch Copy and Paste Fraktion.Zitat von John Woods:
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. Code for readability.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. Code for readability.
Gruß,
Peter
Hallo Ileies,
abgesehen von den bisherigen, validen Kommentaren der Kollegen...
Erklären kann ich ihn Dir nicht vollständig, da er nicht ohne Fehler läuft und recht unklar ist was er bezwecken soll.
Ein paar Zeilen kommentiere ich hier mal:
Zeile 2 belegt die Variable namens DEL mit drei Zeichen und zwar einem Backspace, einem Leerzeichen und einem Backspace.
Zeile 3 belegt die Variable namens text mit der Zeichenfolge "
Zeile 4 erzeugt im Temp-Ordner eine Daten namens ' mit einem . als einzigen Inhalt, also auch ohne anschließendem Zeilenumbruch.
Zeile 10 speichert die Zeichenfolge
Zeile 11 sucht in einer Liste von Dateien die Zeichenfolge
Die Liste von Dateien sollte dabei eigentlich in colorPrint.txt enthalten sein, aber colorPrint.txt enthält keine gültigen Pfad-/Dateinamen, sondern den statischen Text
Zeile 12 gibt 7-mal den Inhalt von DEL aus, also 7-mal "Backspace Leerzeichen Backspace" ohne anschließendem Zeilenumbruch.
Eventuell soll hier eine Ausgabe gelöscht werden, aber die Ausgabe eines Leerzeichen gefolgt von einem Backspace, der das ausgegebene Leerzeichen wieder löscht, erschließt sich mir nicht.
Wo hast Du den Code her und was soll er Deiner Meinung nach tun?
Gruß Frank
abgesehen von den bisherigen, validen Kommentaren der Kollegen...
Erklären kann ich ihn Dir nicht vollständig, da er nicht ohne Fehler läuft und recht unklar ist was er bezwecken soll.
Ein paar Zeilen kommentiere ich hier mal:
Zeile 2 belegt die Variable namens DEL mit drei Zeichen und zwar einem Backspace, einem Leerzeichen und einem Backspace.
Zeile 3 belegt die Variable namens text mit der Zeichenfolge "
text:
" (ohne die Anführungszeichen).Zeile 4 erzeugt im Temp-Ordner eine Daten namens ' mit einem . als einzigen Inhalt, also auch ohne anschließendem Zeilenumbruch.
Zeile 10 speichert die Zeichenfolge
%text%\..\'
also text: \..\'
in einer Daten namens colorPrint.txt.Zeile 11 sucht in einer Liste von Dateien die Zeichenfolge
.
Die Liste von Dateien sollte dabei eigentlich in colorPrint.txt enthalten sein, aber colorPrint.txt enthält keine gültigen Pfad-/Dateinamen, sondern den statischen Text
text:\..\'
Zeile 12 gibt 7-mal den Inhalt von DEL aus, also 7-mal "Backspace Leerzeichen Backspace" ohne anschließendem Zeilenumbruch.
Eventuell soll hier eine Ausgabe gelöscht werden, aber die Ausgabe eines Leerzeichen gefolgt von einem Backspace, der das ausgegebene Leerzeichen wieder löscht, erschließt sich mir nicht.
Wo hast Du den Code her und was soll er Deiner Meinung nach tun?
Gruß Frank
Hallo Ileises
Auf meinem Rechner haben die Laufwerke Buchstaben von A-Z.
Ein Laufwerk mit der Bezeichnung
z.B. Zeile 4:
Da bei
Es wird dann aber auf weitere Eingabe und vor allem auf
(Nicht gerade ein schöner Dateiname, aber egal.)
Gruß Frank
Zitat von @138701:
Ich verstehe von jeder Zeile was sie tut.
Ich verstehe von Zeile 2, 4 und 11 nicht, wie sie es tun.
Prima, dann erklär mir bitte die Zeile 7:Ich verstehe von jeder Zeile was sie tut.
Ich verstehe von Zeile 2, 4 und 11 nicht, wie sie es tun.
':
Ein Laufwerk mit der Bezeichnung
'
habe ich nicht.Das System kann das angegebene Laufwerk nicht finden.
z.B. Zeile 4:
<nul >"%temp%\'" set /p "=."
set /p "=."
keine Variable angegeben ist, die mit .
belegt werden soll wird .
einfach nur ausgegeben.Es wird dann aber auf weitere Eingabe und vor allem auf
Enter
gewartet.<nul
übernimmt hier die Eingabe von Enter
echo .
würde fast dasselbe bewirken wie <nul set /p "=."
allerdings mit der Ausgabe einer zusätzlichen Leerzeile.>"%temp%\'"
leitet die Ausgabe um in eine Datei namens '
im Temp-Ordner des Systems.(Nicht gerade ein schöner Dateiname, aber egal.)
echo .>"%temp%\'"
würde eine Datei in Temp erzeugen, die '
heißt und als Inhalt .
gefolgt von einem Zeilenumbruch erhält.<nul >"%temp%\'" set /p "=."
macht dasselbe, allerdings ohne den Zeilenumbruch.Gruß Frank
Hallo Ileies,
Dort ist zunächst nur "Undefiniertes Laufwerk" zu Lesen.
Was soll das erklären?
Ein Bild dort zeigt:
Meine Eingabeaufforderung sagt allerdings etwas anderes:
Falls ich ein Pinterest-Account anlegen müsste, um eventuelle Erklärungen in Deinem Link zu finden, lehne ich dankend ab.
Gruß Frank
Dort ist zunächst nur "Undefiniertes Laufwerk" zu Lesen.
Was soll das erklären?
Ein Bild dort zeigt:
C:\Users\xxxx\>':':\>
Meine Eingabeaufforderung sagt allerdings etwas anderes:
C:\Users\xxxx\>':=> Das System kann das angegebene Laufwerk nicht finden.
Falls ich ein Pinterest-Account anlegen müsste, um eventuelle Erklärungen in Deinem Link zu finden, lehne ich dankend ab.
Gruß Frank
Erwartest Du jetzt, daß wir diesen Link aufrufen?
Sorry, wer weiß wo dieser Link hinführt.
Gruss Penny.
Sorry, wer weiß wo dieser Link hinführt.
Gruss Penny.
Hallo,
Das sich der dargestellte Pfad evtl. geändert hat.
Nachvollziehen kann ich es auch nicht was dort gemacht werden soll.
Gruß,
Peter
Das sich der dargestellte Pfad evtl. geändert hat.
Meine Eingabeaufforderung sagt allerdings etwas anderes:
Habe jetzt auch Win 7 , Win 8, Win 8.1 und Win 10 1809 durch. Bekomme auch nur Fehler. Evtl ist ja bei dir eine besonder Erweiterung zur Eingabeaufforderung aktiv oder eingeschaltet, evtl. auch durch den uns unbekannten Quelletext, der evtl. Popp und Push verändert.C:\Users\xxxx\>':=> Das System kann das angegebene Laufwerk nicht finden.
Nachvollziehen kann ich es auch nicht was dort gemacht werden soll.
Gruß,
Peter
OK, danke für die Info. Trotzdem: Warum sollen wir den Link aufrufen?
Stattdessen soll er das ganze Skript per Copy-und-paste hier einfügen.
Gruß Frank
Gruss Penny.
Stattdessen soll er das ganze Skript per Copy-und-paste hier einfügen.
Gruß Frank
Gruss Penny.
Kurz zusammengefasst:
Aus dem Prompt wird ein Backspace extrahiert und in Variable DEL, die aus der Kombination Backspace-Space-Backspace besteht, zu einem Wert zusammengebaut, der in der Lage ist Zeichen in einer Ausgabe von hinten nach vorn mit Leerzeichen zu überschreiben. Es wird eine Temporäre Datei angelegt. Mit FINDSTR wird diese gesucht und die Ausgabe mit Option /A farbig untersetzt. Das mehrfache %DEL% löscht alles aus der Ausgabe weg, was nicht zum gewünschten String gehört.
Mittlerweile natürlich völliger Unsinn. Die neue Windows 10 Console unterstützt ANSI Escapesequenzen. Auch für ein Batchscript ...
Steffen
Aus dem Prompt wird ein Backspace extrahiert und in Variable DEL, die aus der Kombination Backspace-Space-Backspace besteht, zu einem Wert zusammengebaut, der in der Lage ist Zeichen in einer Ausgabe von hinten nach vorn mit Leerzeichen zu überschreiben. Es wird eine Temporäre Datei angelegt. Mit FINDSTR wird diese gesucht und die Ausgabe mit Option /A farbig untersetzt. Das mehrfache %DEL% löscht alles aus der Ausgabe weg, was nicht zum gewünschten String gehört.
Mittlerweile natürlich völliger Unsinn. Die neue Windows 10 Console unterstützt ANSI Escapesequenzen. Auch für ein Batchscript ...
Steffen
Hallo,
Gruß,
Peter
Zitat von @rubberman:
Die neue Windows 10 Console unterstützt ANSI Escapesequenzen. Auch für ein Batchscript ...
Vermutung das der TO Windows 10 nutzt oder gewissheit?Die neue Windows 10 Console unterstützt ANSI Escapesequenzen. Auch für ein Batchscript ...
Gruß,
Peter
Warum fragst du mich? Ist mir doch egal. Support für Win7 läuft in ein paar Monaten aus und Gründe noch ein Win8(.1) am Laufen zu haben, gibt es nicht. So what? Also gehe ich von Win10 aus, ja.
Und wer heute noch versucht Batch zu lernen, ist selbst schuld. (Bei mir als Dinosaurier ist das was anderes. Ich muss das nicht mehr lernen, sterbe bald aus und Batch zusammen mit meiner Generation. Und das völlig zu Recht ...)
Steffen
Und wer heute noch versucht Batch zu lernen, ist selbst schuld. (Bei mir als Dinosaurier ist das was anderes. Ich muss das nicht mehr lernen, sterbe bald aus und Batch zusammen mit meiner Generation. Und das völlig zu Recht ...)
Steffen
Hallo,
Weil du es so geschrieben hast als ob du es wüsstest.
Gruß,
Peter
Weil du es so geschrieben hast als ob du es wüsstest.
Also gehe ich von Win10 aus, ja.
OK OK, Ruhig Brauner Gruß,
Peter