Question
boucle while
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 14 ans 10 mois #9658
par vlb
Vincent
Dans le doute, reboot...
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 14 ans 10 mois #9660
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:boucle while
Salut,
suchiwa écrit:
[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 ?
suchiwa écrit:
j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :Des idées ?
[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.
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 14 ans 10 mois #9669
par vlb
Vincent
Dans le doute, reboot...
Réponse de vlb sur le sujet Re:boucle while
Laurent Dardenne écrit:
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 ?
Salut,
suchiwa écrit:j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :Des idées ?
[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.
- vlb
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 14 ans 10 mois #9670
par vlb
Vincent
Dans le doute, reboot...
Réponse de vlb sur le sujet Re:boucle while
Laurent Dardenne écrit:
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
Salut,
suchiwa écrit:j'en ai au moins une Vincent, utilise le cmdlet Test-Path pour tester la présence de tes fichiers :Des idées ?
[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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Discussions générales
- boucle while