FORUM D’ENTRAIDE INFORMATIQUE (FEI)
Site d’assistance et de sécurité informatique

Entraide pour le programmation en général (tous langages).
Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.
  • Avatar du membre
  • Avatar du membre
par Saachaa
#7189
Bonsoir,

J'vous fais l'topos. J'ai un fichier batch avec pas moi de 1000 if tel quel :

if exist "xxx" del /f /s /q "xxx"

fois 1000..

Problème à l'exécution, le programme se stop dès qu'il rencontre un fichier utilisé par un processus...

Donc je me demandais, comment je pouvais procéder, sachant que retaper mille fois "else continue" (si ça exsite en batch) est assez frustrant ^^.

Au pire j'utiliserais Sed s'il n'y a que ça...

Afin bon, j'vous d'mande vos avis

Merci et bonne soirée
Avatar du membre
par Invité
#7221
Bonjour saachaa


1000 if pour if exist "xxx" del /f /s /q "xxx" ??

Pourquoi tu ne fais pas une boucle ?

Du style
for %%a in (
"%userprofile%\desktop\1.txt"
"%userprofile%\desktop\2.txt"
"%userprofile%\desktop\3.txt"
"%userprofile%\desktop\4.txt"
"%userprofile%\desktop\5.txt"
) do if exist %%~a (
del %%~a
) else (echo Probleme)

Tu dis que le programme se stoppe...

Je te conseilles d'insérer des pauses, afin de voir où se situe le problème


Ou alors tu fais plusieurs boucles

Par exemple sur 100 fichiers, tu fais 4 boucles de 25 fichiers

du style
boucle1 suivie d'une pause
boucle2 suivie d'une pause
boucle3 suivie d'une pause
boucle4

Ainsi, si après la boucle 1 est passé avec succès, c'est que le programme fonctionne
Sinon, tu sais que dans la boucle1, des fichiers sont "occupés"...

De là, il faut trouver un moyen de les "débloquer"


@+



Edit : ou alors, pour la suppression : Passes par autoit == compile le en exe et fais un call dans ton batch
surtout qu'en autoit, il existe elseif
#7253
Salut

Pourquoi pas fais de boucle ? Parce-que je ne sais pas les faire en batch ^^.

Sinon, j'ai appelé mon batch via l'invite de commande pour qu'il se stop en cas d'erreurs...

L'erreur vient de la suppression d'un fichier utilisé par un processus, et donc, accessoirement n'importe quel fichier...

Donc si t'as une boucle qui dit que pour chaque fichier utilisé par un processus on le "saute", enfin on continue le bazar je suis pour

Bonne idée pour l'autoit, je regarde de mon côté

En tout cas merci à toi
Avatar du membre
par Invité
#7254
Re


POur l'autoit, regarde l'aide pour la commande filedelete

Il y a surement une solution pour faire une boucle avec filedelete


Je regarde ca de plus pres

++
Avatar du membre
par Invité
#7304
Salut

regarde ce script

If FileExists(@UserProfileDir "\desktop\1.txt") Then
   FileDelete(@UserProfileDir "\desktop\1.txt")
Else
   MsgBox(0, "Erreur", "1.txt non supprimé")
EndIf

If FileExists(@UserProfileDir "\desktop\2.txt") Then
   FileDelete(@UserProfileDir "\desktop\2.txt")
Else
   MsgBox(0, "Erreur", "2.txt non supprimé")
EndIf

If FileExists(@UserProfileDir "\desktop\3.txt") Then
   FileDelete(@UserProfileDir "\desktop\3.txt")
Else
   MsgBox(0, "Erreur", "3.txt non supprimé")
EndIf

If FileExists(@UserProfileDir "\desktop\4.txt") Then
   FileDelete(@UserProfileDir "\desktop\4.txt")
Else
   MsgBox(0, "Erreur", "4.txt non supprimé")
EndIf

If FileExists(@UserProfileDir "\desktop\5.txt") Then
   FileDelete(@UserProfileDir "\desktop\5.txt")
Else
   MsgBox(0, "Erreur", "5.txt non supprimé")
EndIf
J'ai crée 5 fichiers moi meme
= ils sont supprimés

j'ai relancé le script, 5 erreurs sur chaque fichier = tu vois comme cela quels fichiers causent pb

Tu peux faire aussi un filexists


@+
#7305
Annnhhh, t'as pas du comprendre


L'erreur vient de la suppression d'un fichier utilisé par un processus, et donc, accessoirement n'importe quel fichier...

Exemple:

Suppression des fichiers temps d'IE, si internet explorer est ouvert, je suis fichu ^^

Tu as compris ?

Merci à toi
Avatar du membre
par Invité
#7505
Salut

J'espère que tu as installé le pack autoit ^^

car les variables d'environnement commence par @ en autoit

Normalement, quand tu tapes @ : tu as une liste des différents "commandes" qui commencent pas @

Dont les fameuses variables


Je serais toi, je fairais un second script qui lancerait les répertoires

du style run(@userprofiledir)


@+
#7520
Ahhhh, mes oui ça je sais

J'ai converti tout ça avec ça (Linux):

sed 's/\"%Documents%/\@DocumentsCommonDir \ \"/g' CC4 CC3

par exemple pour convertir la variable batch vers Autoit

Mais il me manque celles citées plus haut
#15320
Salut Micka,

Désolé je n'avais pas vu la réponse.

Tu peux mettre en résolu, j'ai réécris mes 3000 boucles en Autoit.

Merci à vous, bonne soirée
Bonsoir,

Ce n'est pas grave de ne pas avoir vu la question (comme beaucoup de membre du forum) , mais tu aurai pu mettre en résolu toi même.

Bravo pour ton travail, good game.

Hello everybody. Lately I have been very unlucky[…]

Having a coupon code is so convenient and helps a […]

Long-distance relationship

Hello everyone! Lately I have been thinking abou[…]

I appreciate you sharing this knowledge. I adore y[…]