Question [RESOLU]Recherche de chaine caractère

Plus d'informations
il y a 14 ans 2 mois #10815 par Deplanche
Bonjour à la communauté,

Je suis entrain d'écrire un script pour calculer le taux de modification journalier des fichiers.

Pour ce faire j'effectue une recherche sur une variable avec la fonction -match pour me permettre de retenir uniquement les lignes contenant cette suite de caractères : \"-a\"

Ce qui me donner par exemple :
$MaVariable -match \"-a\"
ou
$MaVariable -match \"`-a\"

Malheureusement sa n'a pas l'air de fonctionner, il n'est peut être pas possible d'effectuer une recherche sur la carctère -

Merci d'avance pour vos réponses.<br><br>Message édité par: Dionysoos, à: 26/12/11 11:25

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

Plus d'informations
il y a 14 ans 2 mois #10816 par Deplanche
Réponse de Deplanche sur le sujet Re:Recherche de chaine caractère
Cette recherche s'effectue sur une variable qui contient le résultat de la commande Get-ChildItem

d---- 07/10/2011 10:29 FTP
d---- 24/11/2011 08:45 HP Universal Print Driver
d---- 14/09/2011 13:36 iperf
d---- 28/09/2011 13:25 Messa
d---- 14/07/2009 04:37 PerfLogs
d-r-- 29/11/2011 14:57 Program Files

Mais je viens de me rendre compte que la fonction -match n'effectue sa recherche que sur les éléments en gras et non pas sur l'intégralité de la ligne...

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

Plus d'informations
il y a 14 ans 2 mois #10817 par Deplanche
Réponse de Deplanche sur le sujet Re:Recherche de chaine caractère
Mon script devra générer un fichier texte à l'aide de la commande Get-ChildItem ne prenant en compte que les lignes contenant cette occurence \&quot;-a\&quot;

-a--- 10/06/2009 23:42 24 autoexec.bat
-a--- 10/06/2009 23:42 10 config.sys
-a--- 19/12/2011 16:25 12250732 Logc.log
-a--- 26/09/2011 11:12 1623 setuplog.txt

Ce qui doit me permettre derrière d'effectuer des traitements particulier sur ce fichier.

[code:1]$Listing=Get-ChildItem \&quot;C:\\&quot;
for($i=0; $i -lt $Listing.GetLength(0); $i++)
{
if ($Listing[$i] -match '-a')
{
$Listing[$i] &gt; Fichiers.txt
}

} [/code:1]

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

Plus d'informations
il y a 14 ans 2 mois #10819 par Thierry
Réponse de Thierry sur le sujet Re:Recherche de chaine caractère
Bonjour,

Chez moi la commande suivante fonctionne :

[code:1] $a = get-childitem | where-object {$_.mode -match \&quot;a\&quot;}

puis on renvoie $a vers un fichier :

$a &gt; file.txt
[/code:1]

Si tu veux travailler sur une variable c'est pareil :

[code:1]
$a = get-childitem
$a | where-object {$_.mode -match \&quot;a\&quot;} &gt; file.txt


[/code:1]



Bon courage

Thierry<br><br>Message édité par: thierry92, à: 23/12/11 12:53

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

Plus d'informations
il y a 14 ans 2 mois #10827 par Arnaud Petitjean
Salut !

Je n'ai pas bien compris quel est le but de la manoeuvre, mais s'il s'agit de filtrer des fichiers sur la propriete 'Mode' il est preferable de faire ceci:

[code:1]
gci c:\temp | where {$_.mode -like '-a*'}
[/code:1]

Il faut raisonner 'objet' et non plus 'texte'.
Ce que l'on voit dans la console est des objets formates dans le but de visualiser leur contenu. Mais en memoire, Powershell traite le resultat comme etant un tableau d'objets.

Ensuite tu n'as plus qu'a rediriger le resultat dans un fichier texte :

[code:1]
gci c:\temp | where {$_.mode -like '-a*'} | Out-File c:\temp\test.txt

ou

gci c:\temp | where {$_.mode -like '-a*'} &gt; c:\temp\test.txt[/code:1]

Autre chose, fait attention en utilisant l'operateur -Match car ce dernier considere ta chaine de recherche comme une expression reguliere; tandis que ce n'est pas le cas de like.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 14 ans 2 mois #10831 par Laurent Dardenne
Arnaud écrit:

Il faut raisonner 'objet' et non plus 'texte'.

L'opérateur like n'est donc pas le bienvenue, vade retro vilain texte !
[code:1]
Dir|Where-Object {$_.attributes -eq \&quot;archive\&quot;}
[/code:1]
Un abus de chimères certainement :P

Tutoriels PowerShell

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

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