Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2353 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [PowerShell] Récupérer le nom d'un fichier avec Caractère Spécial

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PowerShell] Récupérer le nom d'un fichier avec Caractère Spécial

n°2115391
MonGhost
Ite missa est
Posté le 07-12-2011 à 15:57:28  profilanswer
 

Bonjour,
 
je cherche le moyen de récupérer le nom d'un fichier dans un répertoire de près de 50 000 fichiers, qui contient un caractere spécial sur une balise d'un fichier XML:
 
<numeroServiceMateriel>?????????????</numeroServiceMateriel></course>
 
j'ai trouvé qu'avec  
 
get-content d:\*.*| where {$_ -notmatch "\w"}
 
je récupérais bien la ligne des fichiers qui ont un caractère spécial, mais je voudrais récupérer le nom de ce fichier.
 
si quelqu'un peut m'aider.

mood
Publicité
Posté le 07-12-2011 à 15:57:28  profilanswer
 

n°2115631
macfennec
Zorro del Sáhara
Posté le 08-12-2011 à 19:48:16  profilanswer
 

Je ne sais pas si j'ai bien saisi ce que tu veux.
Ce que j'ai compris: Tu veux récupérer le nom du fichier qui est lu et qui contient une certaine ligne:
Voici ce que je te propose:

$listefichiers= @(Get-ChildItem d:\*.*)
foreach ($fichier in $listefichiers) {
 $contenu = Get-Content $fichier
 if ($contenu -notmatch "\w" ){write $fichier}
 }


 
 
Bien sur à toi d'adapter la condition. Si tu trouve un code plus élégant, n'hésites pas à le soumettre à sa suite.


Message édité par macfennec le 08-12-2011 à 20:17:27

---------------
ΞvΞ online player | Topic hfr eve-online
n°2115725
MonGhost
Ite missa est
Posté le 09-12-2011 à 11:29:46  profilanswer
 

Merci MacFennec, dans l'intervalle j'ai trouvé un script dans l'esprit de ce que tu m'as suggéré. je le donne pour info, j'ai rajouté une variable pour le nombre de fichiers avec caractère spécial et une autre pour le nombre de fichiers parcourus  :
 
$i=0
$j=0
foreach ($file in Get-childitem -recurse "d:\temp" -exclude "th*" )
{if (Get-Content $file|where {$_ -match "<numeroServiceMateriel>....[^a-z]</numeroServiceMateriel></course>"})
    {
    write-host $file
    $i=$i+1
    }$j=$j+1
    } write-host $i
    write-host $j
 
Par contre je n'arrive pas à trouver la syntaxe pour exclure un répertoire contenant *th* par exemple..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [PowerShell] Récupérer le nom d'un fichier avec Caractère Spécial

 

Sujets relatifs
Recuperer l'adresse d'un flux radio difusé en flashmatrice à partir d'un fichier ( module graphe)
Récupérer titre, résumé et image comme sur Facebookcomment remplacer le contenu d'une div par celui d'un fichier?
Script batch - Lister dans un fichier tous les .exe d'un répertoireRécupérer le résultat d'une fonnction PHP par JS
[Résolu][Bash] Recherche ligne par ligne dans un fichier .gzComment supprimer une boite de dialogue à l'ouverture d'un fichier?
[DELPHI] Lire les détails d'un fichier ?[XUL/js] variables en global dans un fichier annexe
Plus de sujets relatifs à : [PowerShell] Récupérer le nom d'un fichier avec Caractère Spécial


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR