Fehler in einer for-Schleife

markKostmann

Newbie
Registriert
Nov. 2022
Beiträge
6
Hallo zusammen,

ich möchte im Terminal alle Bild-Dateien ausgeben lassen. Wenn mir das gelingt werde ich jedes Image entsprechend weiter verarbeiten.
Allerdings funktioniert die Schleife bei mir schon mal nicht im Terminal:
for datei in c:/images/*; do echo $datei; done

Fehler: MissingLoopStatement

Meines Erachtens ist die Syntax richtig.

Vielen Dank für eine Hilfe

LG Mark
 
Was soll das für eine 'Sprache' sein, Batch?

Innerhalb eines Skriptes:
Code:
for /r "c:\images" %%a in (*.*) do echo %%a

Direkt im CMD-Fenster:
Code:
for /r "c:\images" %a in (*.*) do echo %a

Anstatt *.* (gibt alle Dateien aus) kannst du auch spezifisch *.jpg oder *.bmp nutzen.
 
  • Gefällt mir
Reaktionen: Korben2206
... und in Powershell:
PowerShell:
foreach ($datei in (gci  c:\temp\*  )) {Write-Host $datei }
(falls mit "Terminal" das Windows Terminal gemeint ist)
 
  • Gefällt mir
Reaktionen: mae1cum77
@Korben2206 auch wenn Powershell moderner ist, ist es nicht immer intuitiv für Anfänger. Ein einfaches Write-Host ist ja anspruchslos, der TE will aber eine Verarbeitung, da kann unter Umständen eine Änderung der Execution-Policy von Nöten sein, was ein gewisses Risiko birgt, wenn sie nicht zurückgesetzt wird. Wäre nicht immer mein Favorit. Zudem ist es ohne zusätzliche Switches nicht immer schneller als CMD.
 
@Korben2206 wollt nur sagen, daß es mit Batch einfacher ist Ergebnisse zu erzielen, gerade mit wenig Plan.

Die Execution-Policy für Powershell birgt schon ein Sicherheitsrisiko, wenn sie einfach generell erlaubt wird. Da wird nicht umsonst von abgeraten und ist im Standard 'Restricted'. Die sollte auch zurückgesetzt werden, um Misbrauch zu vermeiden. Ist ja auch nur bedingt sinnvoll die Windows-UAC generell auszuhebeln.
 
Wenn jemand "keinen Plan" hat, dann macht es ihm auch nichts aus eine Batch als Admin auszuführen. Da ist der Hinweis beim deaktivieren der Execution-Policy wenigsten nochmal ein Reminder... Und selbst dann muss man für bestimmte Tasks immer noch Admin sein. Also eher ein Hürde mehr als bei einer Batch.
Ich habe jede Menge Powershell-Skripte bei mir Einsatz um alles mögliche zu machen, keines davon benötigt eine Anpassung der ExecutionPolicy... Und noch ein Punkt: wieviele Viren/Malware haben sich früher über Batches/VBScript auf den Rechnern verbreitet? Mir persönlich ist kein einziger Fall bekannt bei dem ein Powershell-Skript eingesetzt wurde.

Ich kann gar nicht zählen wie oft ich früher bei Batchen googlen musste wie for-Schleifen oder Variablen funktionieren, grausam. Powershell orientiert sich an Programmiersprachen und ist, zumindest für mich, wesentlich intuitiver und logischer.
 
Korben2206 schrieb:
Mir persönlich ist kein einziger Fall bekannt bei dem ein Powershell-Skript eingesetzt wurde.
Hmm:
PowerShell was the source of more than a third of critical threats detected on endpoints in the second half of 2020, according to a Cisco research study released at the RSA Conference today.
The third most frequently detected critical Indicator of Compromise (IoC) group was fileless malware – also a common PowerShell threat. This type of malware does not use executable files and has no signature, making it challenging to detect. Fileless malware often manifests itself via suspicious process injections and registry activity. Common fileless malware types include Kovter, Poweliks, Divergent, and Lemon Duck.


Dual-use tools were also responsible for the fourth most common threat: Credential dumping, which is used by hackers to scrape login credentials from a compromised machine. The most commonly detected tool was Mimikatz, which Cisco Secure Endpoint caught dumping credentials from memory.
[https://www.esecurityplanet.com/threats/powershell-source-of-third-of-critical-security-threats/]

Ist nicht so, daß es das nicht gibt, weil es dir nicht bekannt ist :).
 
mae1cum77 schrieb:
Ist nicht so, daß es das nicht gibt, weil es dir nicht bekannt ist :).
Das ist richtig. Hab extra nicht geschrieben das gar keine Vorfälle gibt...
Steht aber nicht im Konflikt zu meinen Aussagen....
 
Die ExecutionPolicy lässt sich ganz einfach aushebeln, die ist und war noch nie ein effektiver Schutz.

Zum Thema Batch, finde ich Ultra Kryptisch, der Grund warum so viele auf Batch setzten ist einfach Gewohnheit und das die meisten Schalter im OS auch nur über Batch angesprochen werden. Viele sind mit Batch groß geworden, oder setzten es z.B. in Unternehmen noch ein, oft weil da für die meisten Workflows entsprechende Scripte bereits existieren. Wer schreibt schon ein kryptisches Batch um nur weil sich was in der Umgebung geändert hat. in den ganzen Foren werden zu 70% immer Batch Lösungen angeboten, und bei einer Internetsuche ist das meiste auch immer Batch aus den oben genannten Gründen.

Powershell ist einfach noch zu jung, bzw kommt erst jetzt so richtig in Fahrt.
Zu bevorzugen ist Powershell:
  • weil es neuer ist
  • auch unter Linux verfügbar
  • besser Lesbar und Verständlich
 
Zurück
Oben