0
votes

Powershell comment vérifier si le fichier texte est vide et ignorer les espaces

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?


1 commentaires

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($_)})


3 Réponses :


0
votes

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.


0 commentaires

2
votes

Trouvé un correctif if (-not [string] :: IsNullOrWhiteSpace ($ logContent)) {do stuff}


1 commentaires

Vous pouvez trouver if(Get-Content path\to\file -TotalCount 1){ ... } pour être plus efficace



1
votes

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"
}


1 commentaires

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.