Question boucle while

Plus d'informations
il y a 14 ans 10 mois #9658 par vlb
boucle while a été créé par vlb
Bonjour,

J'ai créé une fonction qui permet de vérifier la présence de fichier.
[code:1]
LogsDir = \"C:\logs\\"
$file=($LogsDir+\"Err.log\"«»)
$flag=($LogsDir+\"Flag\"«»)
while (($flag) -or (!$file)) {\"Installation ok\"; sleep -s 3}
[/code:1]

L'idée est d'arrêter un script dès lors que le fichier flag et le fichier Err.log est présent.

La fonction retourne bien le message \"Installation ok\" quand le fichier flag est présent ET le fichier Err.log est non présent.

Par contre, quand je supprime le fichier flag ou créé le fichier Err.log, la boucle continue dans sa lancée.

J'ai donc un problème, la fonction ne fait que vérifier la première boucle et reste dans cette état sans fin...

Des idées ?

Vincent

Vincent

Dans le doute, reboot...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9660 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:boucle while
Salut,
suchiwa écrit:

Des idées ?

j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :
[code:1]
$LogsDir = \"C:\Temp\"
$file=\"$LogsDir\Err.log\"
$flag=\"$LogsDir\Flag\"
while (( Test-Path $flag) -or (-not (Test-Path $file)))
{\"Installation ok\"; sleep -s 3}[/code:1]
Dans ta version tu testes le contenu d'une chaîne de caractères.
Et j'ai comme l'impression que tu essais de solutionner ton pb précédement énoncé, je me trompes ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9669 par vlb
Réponse de vlb sur le sujet Re:boucle while
Laurent Dardenne écrit:

Salut,
suchiwa écrit:

Des idées ?

j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :
[code:1]
$LogsDir = \"C:\Temp\"
$file=\"$LogsDir\Err.log\"
$flag=\"$LogsDir\Flag\"
while (( Test-Path $flag) -or (-not (Test-Path $file)))
{\"Installation ok\"; sleep -s 3}[/code:1]
Dans ta version tu testes le contenu d'une chaîne de caractères.
Et j'ai comme l'impression que tu essais de solutionner ton pb précédement énoncé, je me trompes ?


Bonjour,

Arf ! Dans la réalité je teste bien le chemins d'accès, j'ai écri le code à la volée et oublié le test-path...

Entre temps, je me suis demandé si ajouter en paramètre les 2 fichiers pouvait m'aider :

[code:1]
check{

param ([string]$file=$null)
[string]$flag=$null)

$ErrorActionPreference = \"Stop\"
while ((test-path $flag) -or (test-path !$file)) {$null; sleep -s 30}
}

[/code:1]

Ensuite appeler la fonction pour vérifier l'intégralité d'un script

[code:1]
if (check $file $flag)
{
corps du script
}
else
{ trap {\"Error. $Error[0]\";break}
[/code:1]

J'ai modifié mon script de l'énoncé précédent, il est utlisé pour créer le fichier Err.log, qui intègre le code d'erreur $LASTEXITCODE d'une application Win32, et ne quitte plus sauvagement le script avec \";exit\".

La fonction actuelle vérifie la présence du fichier Err.log.
Si le fichier est présent, le script doit retourner l'erreur de $Error[0].

Peut être dois je les fusionner en une seule fonction ?

Vincent

Dans le doute, reboot...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 10 mois #9670 par vlb
Réponse de vlb sur le sujet Re:boucle while
Laurent Dardenne écrit:

Salut,
suchiwa écrit:

Des idées ?

j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :
[code:1]
$LogsDir = \"C:\Temp\"
$file=\"$LogsDir\Err.log\"
$flag=\"$LogsDir\Flag\"
while (( Test-Path $flag) -or (-not (Test-Path $file)))
{\"Installation ok\"; sleep -s 3}[/code:1]
Dans ta version tu testes le contenu d'une chaîne de caractères.
Et j'ai comme l'impression que tu essais de solutionner ton pb précédement énoncé, je me trompes ?


Bonjour,

Arf ! Dans la réalité je teste bien le chemins d'accès, j'ai écri le code à la volée et oublié le test-path...

Entre temps, je me suis demandé si ajouter en paramètre les 2 fichiers pouvait m'aider :

[code:1]
check{

param ([string]$file=$null)
[string]$flag=$null)

$ErrorActionPreference = \"Stop\"
while ((test-path $flag) -or (test-path !$file)) {$null; sleep -s 30}
}

[/code:1]

Ensuite appeler la fonction pour vérifier l'intégralité d'un script

[code:1]
if (check $file $flag)
{
corps du script
}
else
{ trap {\"Error. $Error[0]\";break}}
[/code:1]

J'ai modifié mon script de l'énoncé précédent, il est utlisé pour créer le fichier Err.log, qui intègre le code d'erreur $LASTEXITCODE d'une application Win32, et ne quitte plus sauvagement le script avec \";exit\".

La fonction actuelle vérifie la présence du fichier Err.log.
Si le fichier est présent, le script doit retourner l'erreur de $Error[0].

Peut être dois je les fusionner en une seule fonction ?<br><br>Message édité par: suchiwa, à: 17/05/11 17:30

Vincent

Dans le doute, reboot...

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.099 secondes
Propulsé par Kunena