J'essaye de faire une simple vérification pour un fichier journal s'il est vide ou non
if (Get-Content path-to-file) { do stuff }
Le problème est que le fichier peut contenir un espace blanc uniquement et retourner true J'ai essayé .replace(" ", "")
et .trim()
renvoie toujours true, que puis-je faire?
3 Réponses :
Vous pouvez essayer ceci:
$log = Get-Content -Path '.\Desktop\Document.txt' if ((($null -eq $log) -or ($log.Trim().Length -eq 0))) { ... } else { ... }
La vérification de la valeur NULL doit être la première car si le fichier est vide, cela entraînerait sinon une erreur. Dans cette situation, si $log
est vide, la deuxième vérification sera sautée automatiquement.
Trouvé un correctif if (-not [string] :: IsNullOrWhiteSpace ($ logContent)) {do stuff}
Vous pouvez trouver if(Get-Content path\to\file -TotalCount 1){ ... }
pour être plus efficace
Pas nécessaire de lire tous les fichiers avec get-content (attention aux performances si vous testez un gros fichier), essayez ceci:
if ((get-item "c:\temp\test.txt").Length -gt 0) { "File is not empty" } else { "File is empty" }
Cependant, cela signale les fichiers contenant uniquement des espaces comme «non vides», où l'OP veut que ces fichiers soient également considérés comme vides.
essayez quelque chose comme ce qui suit pour créer un tableau d'espaces et / ou de chaînes vides dans un tableau vide ...
@(' ', '', ' ').Where({-not [string]::IsNullOrWhiteSpace($_)})