Question probleme de tri avec Get-Child-Item

Plus d'informations
il y a 12 ans 2 semaines #11467 par Thierry S.
yvesca écrit:

Tu peux utilisé justement get-childitem pour le tester. Si le répertoire est vide, il te retourne un null.

[code:1]
if ((Test-Path $mydata) -and (gci $mydata)) {
$true
}
else {
$false
}

[/code:1]

Et pour ton deuxième soucis, précise à la fin du chemin de ton dossier que c'est le contenu que tu veux récupérer avec une *. Essaye ceci :

[code:1]
Get-ChildItem \"c:\PATHSOURCE\*\"-include NJ_ETAT.*,NJA_C.*,K2U_ONC.*,X01_R.*
[/code:1]<br><br>Message édité par: yvesca, à: 5/04/12 17:56


ok pour le second probleme !
Get-ChildItem \"$mydata\*\"
j'avais essayé, mais j'avais omis les \"\" .. :)
Merci

je teste le 1er prb....et je re.

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

Plus d'informations
il y a 12 ans 2 semaines #11468 par Thierry S.
yvesca écrit:

Tu peux utilisé justement get-childitem pour le tester. Si le répertoire est vide, il te retourne un null.

[code:1]
if ((Test-Path $mydata) -and (gci $mydata)) {
$true
}
else {
$false
}

[/code:1]

marche pas :(


[code:1]$FilesAF = Get-ChildItem \"$mydata\*\" -include NJ1*.*,NKI*.*,K2U*.*
|Where {$_.LastWriteTime -gt \"$lastmod\"} |Where {$_.length -lt 2000000}
#
if ((Test-Path $mydata) -and (gci $mydata))
{
foreach ($FileAF in $FilesAF)
{
write-host \"Fichier \" -nonewline; write-host \"$FileAF\" -foregroundcolor \"green\" -backgroundcolor \"black\" -nonewline; write-host \" trouvé\" ;
Copy-Item $FileAF $pathcopyAF
}
}
Else
{
Write-Host \"Le Repertoire $mydata EST VIDE !\"
}[/code:1]

j'pense que je m'y prends pas bien :(

En fait , le test doit se faire sur mes filtres...
mais ce n'est pas le cas,

le test-path constate q'ils y a des fichiers (autres que ce que je veux... et continue avec $true\")
mais comme la variable $FileAf est vide , ça coince pour la copy-item.


d'ailleurs je devrais écrire :
Write-Host \"Aucun fichier de - de 12h et de - de 2o trouvé !\"
au lieu de
Write-Host \"Le Repertoire $mydata EST VIDE !\"

PS.
il faut que je teste si $FileAF est égal à $null...
je pense???<br><br>Message édité par: Thierry94, à: 6/04/12 12:49

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

Plus d'informations
il y a 12 ans 2 semaines #11469 par Yves Campmas
Tout simplement en testant dans ta condition si ta variable est null ou pas. Si il ne trouve aucun élément dans le dossier avec la cmdlet gci, elle va être null :

[code:1]
if ($FilesAF) {
Write-Host \&quot;Le Repertoire $mydata N'EST PAS VIDE !\&quot;
}
else {
Write-Host \&quot;Le Repertoire $mydata EST VIDE !\&quot;
}
[/code:1]

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

Plus d'informations
il y a 12 ans 2 semaines #11473 par Thierry S.
yvesca écrit:

Tout simplement en testant dans ta condition si ta variable est null ou pas. Si il ne trouve aucun élément dans le dossier avec la cmdlet gci, elle va être null :

[code:1]
if ($FilesAF) {
Write-Host \&quot;Le Repertoire $mydata N'EST PAS VIDE !\&quot;
}
else {
Write-Host \&quot;Le Repertoire $mydata EST VIDE !\&quot;
}
[/code:1]


yes j'ai réussi ;-)

Merci :):laugh:

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

Plus d'informations
il y a 12 ans 2 semaines #11476 par Laurent Dardenne
Salut,
une petite remarque en passant :
yvesca écrit:

Tout simplement en testant dans ta condition si ta variable est null ou pas. Si il ne trouve aucun élément dans le dossier avec la cmdlet gci, elle va être null

Prenez garde avec cette construction, ici cela fonctionne comme tu le précises, mais certains cmdlets ou fonctions peuvent renvoyer des collections vide, i.e. avec count=0.
Et à débugger c'est assez pénible.

Pour s'en prémunir :
[code:1]
$Result=@(traitement)
if ($Result.count -ne 0}
{ \&quot;OK\&quot; }
else
{\&quot;NOK\&quot;}
[/code:1])

Tutoriels PowerShell

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

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