Question
[RESOLU]Recherche de chaine caractère
- Deplanche
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 14 ans 2 mois #10815
par Deplanche
[RESOLU]Recherche de chaine caractère a été créé 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
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.
- Deplanche
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
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...
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.
- Deplanche
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
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 \"-a\"
-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 \"C:\\"
for($i=0; $i -lt $Listing.GetLength(0); $i++)
{
if ($Listing[$i] -match '-a')
{
$Listing[$i] > Fichiers.txt
}
} [/code:1]
-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 \"C:\\"
for($i=0; $i -lt $Listing.GetLength(0); $i++)
{
if ($Listing[$i] -match '-a')
{
$Listing[$i] > Fichiers.txt
}
} [/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Thierry
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 42
- Remerciements reçus 0
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 \"a\"}
puis on renvoie $a vers un fichier :
$a > file.txt
[/code:1]
Si tu veux travailler sur une variable c'est pareil :
[code:1]
$a = get-childitem
$a | where-object {$_.mode -match \"a\"} > file.txt
[/code:1]
Bon courage
Thierry<br><br>Message édité par: thierry92, à: 23/12/11 12:53
Chez moi la commande suivante fonctionne :
[code:1] $a = get-childitem | where-object {$_.mode -match \"a\"}
puis on renvoie $a vers un fichier :
$a > file.txt
[/code:1]
Si tu veux travailler sur une variable c'est pareil :
[code:1]
$a = get-childitem
$a | where-object {$_.mode -match \"a\"} > 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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 14 ans 2 mois #10827
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Recherche de chaine caractère
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*'} > 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
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*'} > 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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 14 ans 2 mois #10831
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recherche de chaine caractère
Arnaud écrit:
[code:1]
Dir|Where-Object {$_.attributes -eq \"archive\"}
[/code:1]
Un abus de chimères certainement
L'opérateur like n'est donc pas le bienvenue, vade retro vilain texte !Il faut raisonner 'objet' et non plus 'texte'.
[code:1]
Dir|Where-Object {$_.attributes -eq \"archive\"}
[/code:1]
Un abus de chimères certainement
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.076 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [RESOLU]Recherche de chaine caractère