Question
taille = ***octets ou ko
- julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 ans 4 mois #15820
par julien
taille = ***octets ou ko a été créé par julien
Bonjour a tous,
je continu mon apprentissage powershell, mais ai encore besoins de vos lumieres...
actuellement je fais un script qui doit me sortir une la taille des fichiers = a une certaine taille.
Voila ma premiere ebauche:
[code:1]
Get-ChildItem -recurse -Path c:\temp |
Where-Object { $_.length -eq $false (254) }
Select-Object Name, FullName, Length |
Out-File \"C:\Temp\\taille.txt\"[/code:1]
Je ne sais pas trop comment formuler ma commande pour la taille du fichier = a....
Si vous avez des pistes
Merci d'avance
je continu mon apprentissage powershell, mais ai encore besoins de vos lumieres...
actuellement je fais un script qui doit me sortir une la taille des fichiers = a une certaine taille.
Voila ma premiere ebauche:
[code:1]
Get-ChildItem -recurse -Path c:\temp |
Where-Object { $_.length -eq $false (254) }
Select-Object Name, FullName, Length |
Out-File \"C:\Temp\\taille.txt\"[/code:1]
Je ne sais pas trop comment formuler ma commande pour la taille du fichier = a....
Si vous avez des pistes
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 4 mois #15822
par Philippe
Réponse de Philippe sur le sujet Re:taille = ***octets ou ko
bonjour julien_pw
je dirait que $false est en trop dans ton where
essai sans ca devrait aller mieux
mais tu doit aussi precisé que tu veux travailler que sur les fichiers sinon tu aurra une erreur car lenght n'existe pas pour un dossier
[code:1] | Where-Object {$_.PSIsContainer -eq 0 -and $_.Length -eq 24 }[/code:1]
Get-ChildItem renvoie deux type d'info (voir Get-ChildItem -Path c:\temp | Get-Member):
- System.IO.FileInfo -> pour les fichiers
- System.IO.DirectoryInfo -> pour les dossiers
mais length n'est pas dans System.IO.DirectoryInfo, tu doit donc completer ton filter pour ne garder que les fichiers et donc ne pas avoir d'erreur
je dirait que $false est en trop dans ton where
essai sans ca devrait aller mieux
mais tu doit aussi precisé que tu veux travailler que sur les fichiers sinon tu aurra une erreur car lenght n'existe pas pour un dossier
[code:1] | Where-Object {$_.PSIsContainer -eq 0 -and $_.Length -eq 24 }[/code:1]
Get-ChildItem renvoie deux type d'info (voir Get-ChildItem -Path c:\temp | Get-Member):
- System.IO.FileInfo -> pour les fichiers
- System.IO.DirectoryInfo -> pour les dossiers
mais length n'est pas dans System.IO.DirectoryInfo, tu doit donc completer ton filter pour ne garder que les fichiers et donc ne pas avoir d'erreur
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 11 ans 4 mois #15856
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:taille = ***octets ou ko
Bonsoir,
Simplement pour compléter ce qu'indique 6ratgus, parce qu'il s'agit aussi du Forum 'Entraide pour les débutants' mais aussi que l'occasion fait le lardon
La propriété 'PSIsContainer' est de type '[System.Boolean]' :
[code:1]
PS > $file.PSIsContainer | Get-Member
TypeName : System.Boolean
Name MemberType Definition
----
CompareTo Method int CompareTo(System.Object obj), int CompareTo(bool value), int ICompar
Equals Method bool Equals(System.Object obj), bool Equals(bool obj), bool IEquatable[b
GetHashCode Method int GetHashCode()
GetType Method type GetType()
[/code:1]
L'extrait du code suivant :
[code:1]
| Where-Object {$_.PSIsContainer -eq 0 -and $_.Length -eq 24 }
[/code:1]
Peut également s'écrire :
[code:1]
| Where-Object {$_.PSIsContainer -eq $false -and $_.Length -eq 24 }
[/code:1]
[code:1]
PS > [int]$false
0
PS > [int]$true
1
PS > [bool]0
False
PS > [bool]1
True
PS > [bool]123
True
PS > [bool]$null
False
PS > [bool]\"\"
False
[/code:1]
Via ces exemples, on comprend que le booléen 'True' est lié à la valeur 1 ([system.int32]) mais que si nous typons \"quelque chose qui n'est pas vide\" par [system.boolean] on obtient également un 'True', donc \"quelque chose qui est vrai\".
0, rien ($null) ou une chaine de caractère vide (\"\") correspond à 'False'.
Nous pouvons également utiliser l'opérateur logique '-not' :
[code:1]
| Where-Object {-not $_.PSIsContainer -and $_.Length -eq 24 }
[/code:1]
Pour ce qui concerne la propriété 'Length' d'un objet 'System.IO.FileInfo' (un fichier) elle est toujours renseignée en octets (Bytes).
Pour effectuer une comparaison avec des ko, on peut utiliser le suffixe 'KB' :
[code:1]
| Where-Object {-not $_.PSIsContainer -and $_.Length -eq 24KB }
[/code:1]
D'autres suffixes sont disponibles :
[code:1]
PS > 1KB
1024
PS > 1MB
1048576
PS > 1GB
1073741824
PS > 1TB
1099511627776
PS > 1PB
1125899906842624
[/code:1]
@ +
Matthew BETTON
Simplement pour compléter ce qu'indique 6ratgus, parce qu'il s'agit aussi du Forum 'Entraide pour les débutants' mais aussi que l'occasion fait le lardon
La propriété 'PSIsContainer' est de type '[System.Boolean]' :
[code:1]
PS > $file.PSIsContainer | Get-Member
TypeName : System.Boolean
Name MemberType Definition
----
CompareTo Method int CompareTo(System.Object obj), int CompareTo(bool value), int ICompar
Equals Method bool Equals(System.Object obj), bool Equals(bool obj), bool IEquatable[b
GetHashCode Method int GetHashCode()
GetType Method type GetType()
[/code:1]
L'extrait du code suivant :
[code:1]
| Where-Object {$_.PSIsContainer -eq 0 -and $_.Length -eq 24 }
[/code:1]
Peut également s'écrire :
[code:1]
| Where-Object {$_.PSIsContainer -eq $false -and $_.Length -eq 24 }
[/code:1]
[code:1]
PS > [int]$false
0
PS > [int]$true
1
PS > [bool]0
False
PS > [bool]1
True
PS > [bool]123
True
PS > [bool]$null
False
PS > [bool]\"\"
False
[/code:1]
Via ces exemples, on comprend que le booléen 'True' est lié à la valeur 1 ([system.int32]) mais que si nous typons \"quelque chose qui n'est pas vide\" par [system.boolean] on obtient également un 'True', donc \"quelque chose qui est vrai\".
0, rien ($null) ou une chaine de caractère vide (\"\") correspond à 'False'.
Nous pouvons également utiliser l'opérateur logique '-not' :
[code:1]
| Where-Object {-not $_.PSIsContainer -and $_.Length -eq 24 }
[/code:1]
Pour ce qui concerne la propriété 'Length' d'un objet 'System.IO.FileInfo' (un fichier) elle est toujours renseignée en octets (Bytes).
Pour effectuer une comparaison avec des ko, on peut utiliser le suffixe 'KB' :
[code:1]
| Where-Object {-not $_.PSIsContainer -and $_.Length -eq 24KB }
[/code:1]
D'autres suffixes sont disponibles :
[code:1]
PS > 1KB
1024
PS > 1MB
1048576
PS > 1GB
1073741824
PS > 1TB
1099511627776
PS > 1PB
1125899906842624
[/code:1]
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 4 mois #15859
par Philippe
Réponse de Philippe sur le sujet Re:taille = ***octets ou ko
merci Matthew
j'ai encore apris quelque choses ce matin
les suffixes KB/MB/GB/PB... c'est sympas et pratique des fois
encore une bonne info sur ce forum
j'ai encore apris quelque choses ce matin
les suffixes KB/MB/GB/PB... c'est sympas et pratique des fois
encore une bonne info sur ce forum
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.108 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- taille = ***octets ou ko