LA QUESTION EST EXACTEMENT QUE JE ET QUE FAIT NON TRAVAILLÉESde Windows Batch: comportement incorrect lors de double clic - Fonctionne bien sur
Ce script fonctionne bien si je vais à l'invite et appelle le fichier.bat, obtenir tous les fichiers * .gsc et nettoyer les lignes sans cette chaîne. Mais quand j'ai double-cliqué ne fonctionne pas comme prévu, et même le premier fichier est supprimé chaque fois que je cours, et aucun des fichiers restants ont été nettoyés. : \
@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"
)
)
Je l'ai déjà tryed à utiliser
setlocal enableDelayedExpansion
Et aussi remplacer les vars pour "!" au lieu de "%", mais je fais quelque chose de mal ... pourriez-vous m'aider à pointer ce que j'ai besoin de changer pour que cela fonctionne également en double-cliquant?
merci!
double possible de [lot si la déclaration ne fonctionne pas dans la boucle for] (https://stackoverflow.com/questions/45638465/batch-if-statement-not- travailler-dans-pour-boucle) – JosefZ
Mes questions étaient exactement dire que j'ai essayé cela et n'a pas fonctionné, il y a quelque chose de mal ... pas de doublon. Le problème persiste. – Hajas
Il s'agit d'un doublon, car le fichier de commandes ne fonctionne pas vraiment à partir d'une fenêtre d'invite de commande. Lors de la première exécution du fichier batch, toutes les occurrences de '% tempfile%' ne sont remplacées par rien avant l'exécution de la commande __FOR__. Lors de la deuxième exécution du fichier batch dans la même fenêtre d'invite de commande,% tempfile% est remplacé par la dernière valeur de la dernière exécution de l'exécution précédente du fichier batch avant l'exécution de la commande __FOR__ lors de l'exécution du deuxième batch existe toujours à partir de l'exécution du fichier batch précédent. – Mofi