CMD- For-Schleife geht mal und mal nicht?!?
Hallo zusammen,
Ich hab seit einiger Zeit (nach irgendeinem Windowsupdate, keine Ahnung welches das gewesen sein könnte) ein Problem mit einem Befehl, der in einer Batchdatei auf Windows-PCs ausgeführt wird:
Bis zu einem gewissen Zeitraum hat der Befehl so funktioniert, jetzt KANN es sein dass es funktioniert wenn ich das %f in %%f ändere, es kann aber auch sein dass die Kommandozeile direkt danach abstürzt / sich schließt, obwohl noch weitere Befehle folgen. Das ist aber auch nicht überall so - auf meinem Laptop mit Windows 7 funktioniert der hier:
auf Windows 8 / 10 je nach Updatestand ja oder auch nein ...
Kann mir das jemand erklären? Hat das ggf. mit der Powershell zu tun, dass *.bat-Dateien jetzt standardmäßig darüber gestartet werden und nicht mehr über cmd.exe? Dann würde ich das ggf. noch verstehen, weil die Syntax für FOR-Schleifen dort eine andere ist ...
Gruß
(ein total ratloser) Caddy ....
Ich hab seit einiger Zeit (nach irgendeinem Windowsupdate, keine Ahnung welches das gewesen sein könnte) ein Problem mit einem Befehl, der in einer Batchdatei auf Windows-PCs ausgeführt wird:
for /F "tokens=2 delims=," %f in ('tasklist /fo csv ^|findstr /i "planung_."') do taskkill /F /PID %f /T
Bis zu einem gewissen Zeitraum hat der Befehl so funktioniert, jetzt KANN es sein dass es funktioniert wenn ich das %f in %%f ändere, es kann aber auch sein dass die Kommandozeile direkt danach abstürzt / sich schließt, obwohl noch weitere Befehle folgen. Das ist aber auch nicht überall so - auf meinem Laptop mit Windows 7 funktioniert der hier:
for /F "tokens=2 delims=," %%f in ('tasklist /fo csv ^|findstr /i "planung_."') do taskkill /F /PID %%f /T
Kann mir das jemand erklären? Hat das ggf. mit der Powershell zu tun, dass *.bat-Dateien jetzt standardmäßig darüber gestartet werden und nicht mehr über cmd.exe? Dann würde ich das ggf. noch verstehen, weil die Syntax für FOR-Schleifen dort eine andere ist ...
Gruß
(ein total ratloser) Caddy ....
Please also mark the comments that contributed to the solution of the article
Content-Key: 349203
Url: https://administrator.de/contentid/349203
Printed on: April 24, 2024 at 17:04 o'clock
5 Comments
Latest comment
Hallo,
Nö, eigentlich noch nie in deiner Batch Datei.
Gruß,
Peter
Nö, eigentlich noch nie in deiner Batch Datei.
wenn ich das %f in %%f ändere
%%F ist in einer Batch Datei zwingend nötiges kann aber auch sein dass die Kommandozeile direkt danach abstürzt
Wir kennen die Zeilen danach nichtauf meinem Laptop mit Windows 7 funktioniert der hier:
Andere Rechte?auf Windows 8 / 10 je nach Updatestand ja oder auch nein ...
Dann hast du das Update ja schon Identifiziert. Welches ist es denn?Kann mir das jemand erklären?
In Batch müssen halt 2 %% aufeinander folgen, in einer Manuellen kommandizeile reicht ein %Hat das ggf. mit der Powershell zu tun
Nöweil die Syntax für FOR-Schleifen dort eine andere ist ...
Wo ist die Syntax dort anders?Gruß,
Peter
Zitat von @CaddyM:
Hallo zusammen,
Ich hab seit einiger Zeit (nach irgendeinem Windowsupdate, keine Ahnung welches das gewesen sein könnte) ein Problem mit einem Befehl, der in einer Batchdatei auf Windows-PCs ausgeführt wird:
Das hat in einer Batchdatei so noch NIE funktioniert, auch nicht zu DOS Zeiten.Hallo zusammen,
Ich hab seit einiger Zeit (nach irgendeinem Windowsupdate, keine Ahnung welches das gewesen sein könnte) ein Problem mit einem Befehl, der in einer Batchdatei auf Windows-PCs ausgeführt wird:
for /F "tokens=2 delims=," %f in ('tasklist /fo csv ^|findstr /i "planung_."') do taskkill /F /PID %f /T
Dieser Befehl funktioniert in einer Eingabeaufforderung.
Bis zu einem gewissen Zeitraum hat der Befehl so funktioniert,
Wie gesagt in einer Eingabeaufforderung funktioniert es. In einer Batchdatei nicht.jetzt KANN es sein dass es funktioniert wenn ich das %f in %%f ändere, es kann aber auch sein dass die Kommandozeile direkt danach abstürzt / sich schließt, obwohl noch weitere Befehle folgen. Das ist aber auch nicht überall so - auf meinem Laptop mit Windows 7 funktioniert der hier:
auf Windows 8 / 10 je nach Updatestand ja oder auch nein ...
Grundsätzlich müssen in einer Batchdatei zwei %% gesetzt werden, bei einer Eingabeaufforderung sind es ein % Zeichen.for /F "tokens=2 delims=," %%f in ('tasklist /fo csv ^|findstr /i "planung_."') do taskkill /F /PID %%f /T
Das war schon immer so.
Kann mir das jemand erklären? Hat das ggf. mit der Powershell zu tun, dass *.bat-Dateien jetzt standardmäßig darüber gestartet werden und nicht mehr über cmd.exe? Dann würde ich das ggf. noch verstehen, weil die Syntax für FOR-Schleifen dort eine andere ist ...
Du verwechselst Batch mit PowershellSchau über die Suche nach Batch Tutorial, For Schleife.
Gruß
(ein total ratloser) Caddy ....
Gruss Penny
Das stimmt nicht. Rufe die Eingabeaufforderung (cmd.exe) auf und kopiere den ersten Befehl und führe in aus.
Du wirst sehen, das es funktioniert.
Wenn Du Deinen zweiten Befehl in die Eingabeaufforderung (cmd.exe) kopierst und ausführst, wirst Du eine Fehlermeldung bekommen.
Also wenn ich eine Batchdatei anklicke, wird bei mir der Titel der Batchdatei angezeigt.
Du wirst sehen, das es funktioniert.
Wenn Du Deinen zweiten Befehl in die Eingabeaufforderung (cmd.exe) kopierst und ausführst, wirst Du eine Fehlermeldung bekommen.
Also wenn ich eine Batchdatei anklicke, wird bei mir der Titel der Batchdatei angezeigt.
Hallo,
Gruß,
Peter
Zitat von @CaddyM:
Hm - ich bin zielmlich sicher dass das bei einigen PCs so funktioniert hat, nachdem ich die Batch auf diese Schreibweise geändert habe.
Da irrst duHm - ich bin zielmlich sicher dass das bei einigen PCs so funktioniert hat, nachdem ich die Batch auf diese Schreibweise geändert habe.
Merkwürdig, aber ok.
Du musst uns natürlich kein glauben schenken. Ein For /? in ein Kommandozeilenfenster sagt es dir. Auch z.B. hier kannst du es nachlesen. http://www.robvanderwoude.com/for.php in 1. Notes.Wenn ich eine Bat-Datei hier starte wird "c:\windows\system32\cmd.exe" im Fenstertitel angezeigt
Joa, ist auch OK. Und wenn du es als Admin startest steht wieder etwas anderes da. Normalerweise steht im Fenstertitel "Eingabeausfforderung" oder ein "Administrator: Eingabeaufforderung" im Fenstertitel.wenn die Datei cmd.exe startet
Nein, wenn die CMD die Batch abarbeitet. aber funktioniert wenn es in cmd.exe direkt eingetragen wird. Ich nehm das mal so hin.
Du musst uns nicht glauben, gibt millionenfache Hinweise im Internet. Vertraue deinem PC Die erste Seite mit For /? sagt es dir.Wenn ich eine Bat-Datei starte
Definiere deine Batch Datei. Meine haben .bat oder .cmd und diese Endung sagt dem OS starte bitte das Command Programm und in einem Fenster (Kommandozeilenfenster, DOS Fenster usw.). Wenn ich meine Dateiendung sage, starte bitte ein Powershell wird das noch passieren, aber ob die diese Batch abarbeiten kann ist dan ungewiss. Powershell ungleich Batch ungleich CB Script usw. Was also ist bei dir eingestellt beim Starten einer Batch Datei? https://en.wikipedia.org/wiki/Batch_fileGruß,
Peter