DIE FRAGE ist genau das habe ich das und war NICHTWindows-Batch: Falsches Verhalten bei einem Doppelklick angeklickt - funktioniert auf prompte
Dieses Skript läuft gut, wenn ich auf die Eingabeaufforderung gehen und die file.bat nennen, erhalten alle Dateien * .gsc und bereinigen Sie die Zeilen ohne diese Zeichenfolge.
Aber wenn ich doppelt geklickt habe funktioniert nicht wie erwartet, und sogar die erste Datei wird jedes Mal gelöscht, wenn ich laufe, und keine der verbleibenden Dateien wurden gereinigt. : \
@echo off
set "string_to_find=level.waypoints\["
for /f "tokens=*" %%a in ('dir /B *.gsc') do (
set "tempfile=%temp%\%%a"
if exist "%tempfile%" del "%tempfile%" >NUL
findstr /C:"%string_to_find%" "%~dp0\%%a" >> "%tempfile%"
if not errorlevel 1 (
del "%%a" >NUL
move /Y "%tempfile%" "%~dp0\%%a" >NUL
if exist "%tempfile%" del "%tempfile%" >NUL
echo File "%~dp0\%%a" processed successfully
) else (
echo Problem processing file "%~dp0\%%a"
)
)
Ich habe versucht bereits
setlocal enableDelayedExpansion
Und auch ersetzen die Vars für die Verwendung von "!" anstelle von "%", aber ich mache etwas falsches ... könntest du mir helfen, zu zeigen, was ich genau ändern muss, um diese Arbeit auch mit Doppelklick zu machen?
danke!
Mögliche Duplikat [Batch if-Anweisung nicht für Schleife arbeitet in] (https://stackoverflow.com/questions/45638465/batch-if-statement-not- Works-in-for-Loop) – JosefZ
Meine Fragen lauteten genau, dass ich das versucht habe und nicht funktioniert habe, da stimmt was nicht ... nicht duplizieren. Problem bestehen fort. – Hajas
Es ist ein Duplikat, weil die Batch-Datei auch nicht wirklich funktioniert, wenn sie von einem Eingabeaufforderungsfenster aus ausgeführt wird. Bei der ersten Ausführung der Batchdatei werden alle Vorkommen von% tempfile% durch nichts ersetzt, bevor der Befehl __FOR__ überhaupt ausgeführt wird. Bei der zweiten Ausführung der Stapeldatei im selben Eingabeaufforderungsfenster wird "% tempfile%" durch den letzten Wert ersetzt, der der letzten Schleifenausführung aus der vorherigen Batchdateiausführung vor dem Ausführen des Befehls __FOR__ bei der zweiten Batchdateiausführung durch diese Umgebungsvariable zugewiesen wurde existiert noch aus der vorherigen Batch-Dateiausführung. – Mofi