Flash info

"Problems cannot be solved by the same level of thinking that created them."

- Albert Einstein
 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
n3m0
Utilisateur

PowerShelleur Débutant
Messages: 41
graphgraph
Karma: 0  
[resolu ]récupération valeur et comparaison - 9/01/17 17:17 Bonjour à tous et bonne années,

j'ai un petit projet de débutant pour me former petit à petit.


je cherche à créer une faq tiddly wiki, c'est une page web pour de la docs en interne.


Toutes mes documentations sont sur un système de fichier Windows, rangé correctement par catégorie.


Jusque la Je récupère tous les fichier texte de mon dossier documentation que j'importent dans des fichier .tid, pareil pour les PDF ainsi qu'une conversion
des doc/docx en PDF avec la création d'un fichier .meta que requière la solution tiddely.


j'ai deux choses à faire qui me bloque maintenant, la première est que je veux créer des TAGS dans tiddly pour gérer des catégories.

Ce que je veux c'est récupérer le nom du dossier parent de chaque élément à traité, qui correspond à la catégorie et donc au tags.


j'utilise donc ces propriétés.
Code:

  TypeName System.IO.FileInfo Directory                 Property       System.IO.DirectoryInfo Directory {get;}                                                                                      DirectoryName             Property       string DirectoryName {get;}             




le problème est que lors du add-content pour ajouté la ligne TAGS : "catégorie" il m'écrit le chemin complet alors que dans la console j'ai bien juste le nom.
je ne comprend pas trop pourquoi, je n'ai pas le même résultat ?



le second soucis:

Etant données que tout est dans des fichier texte et que j'ai une balise contenant la date de modification dans chaque fichier modifié par tiddly,

j'aimerais savoir comment je peut comparer la date de modification d'un fichier, dans le système Windows, et, la date de modification renseigné dans tiddly ?


je sais pas si c'est faisable pour le deuxième soucis


voici à quoi ça ressemble pour l'instant
Code:

 # Nom du script # V1 #Requires -version 3 ##Requires -Modules PSWorkflow, @{moduleName="DataOnTap";ModuleVersion=3.2.0} ##Requires -PSSnapin DiskSnapin -Version 1.2 ##Requires -RunAsAdministrator # Déclaration de variables  #$Host.PrivateData.set_ErrorforegroundColor('red') $ErrorActionPreference'continue' $pathsource="c:\mytest\" $pathdest="c:\mytest2\" $datecrea=get-date -format yyyyMMddHHmmssmms $rep_source=Get-ChildItem $pathsource -filter *.txt -Recurse #| ForEach-Object{$_.BaseName} $search_pdf=Get-ChildItem $pathsource -filter *.pdf -Recurse $rep_dest=Get-ChildItem $pathdest -filter *.tid -Recurse -Force #$Fichier=new-object system.IO.FileInfo $pathdest\$item_source.BaseName + "tid" #$a=$Fichier.Get_Exists() #DECLARATION DE FONCTION  # debut du cript # Création  des tid avec import des info lié foreach ($item_source in $rep_source)         {         $filetest$pathdest$item_source.BaseName +".tid" # afin de generer un testpath su fichier tid         #$logs=  $errortid >>c:\log.txt         #-errorvariable errortid [System.IO.IOException]          $titre_element$item_source.BaseName         $tags$item_source.Directory         if (test-Path "$filetest") {     write-host "le fichier existe deja"     }     else {         New-Item "$pathdest\$item_source" -Force -Type file          Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "created: $datecrea"          Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "creator: admin"         Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "modified: $datecrea"         Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "title: $titre_element"         Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "tags: $tags"         Add-Content -Encoding UTF8 -Path "$pathdest\$item_source" -Value "type: text/plain `n `n `n"         # Add-Content -Path "$pathdest\$item_source" -Value  "`n `n `n `n `n `n"         Add-Content -Encoding UTF8 -Path $pathdest\$item_source -Value (get-content $item_source.Fullname)         get-item -Path $pathdest\$item_source Rename-Item -NewName {$_.name -replace ".txt$",".tid"}; #                      }            } foreach ($item_pdf in $search_pdf) {     $filetest_pdf$pathdest$item_pdf#.BaseName +".pdf"     if (test-Path "$filetest_pdf") {     write-host "le fichier pdf et meta existe deja"     }     else {     $titre_element_pdf$item_pdf.BaseName     $strFile $pathdest$item_pdf +".meta"     New-Item $strFile -Type file     Copy-Item $item_pdf.FullName -Destination $pathdest     #$col_meta=Get-ChildItem $pathdest -filter *.meta -Recurse     $item_meta$item_pdf.Name +".meta"     $titre_element_meta$item_pdf.BaseName     Add-Content -Encoding UTF8 -Path "$pathdest\$item_meta" -Value "created: $datecrea"     Add-Content -Encoding UTF8 -Path "$pathdest\$item_meta" -Value "modified: $datecrea"     Add-Content -Encoding UTF8 -Path "$pathdest\$item_meta" -Value "title: $titre_element_meta"     Add-Content -Encoding UTF8 -Path "$pathdest\$item_meta" -Value "type: application/pdf `n `n `n"      }      }



j'ai pas encore trop cherché pour comparer les dates mais je suis preneur pour tout commentaire.

merci beaucoup

Message édité par: farid, à: 17/01/17 16:15
  | | L'administrateur a désactivé l'accés public en écriture.
n3m0
Utilisateur

PowerShelleur Débutant
Messages: 41
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 10/01/17 13:41 Bonjour,

finalement j'ai réglé le premier problème c'était trop simple en fait j'ai honte d'avoir demandé

Code:

 $tags$item_source.Directory         $tagstitle$tags.BaseName



il me reste le second problème, je ne sais pas trop comme je dois m'y prendre pour comparer les deux date lastWritetime...

  | | L'administrateur a désactivé l'accés public en écriture.
n3m0
Utilisateur

PowerShelleur Débutant
Messages: 41
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 17/01/17 09:24 Bonjour,

voici ce que je fais pour comparer les dates en écritures de deux fichier

Code:

  $dateItemSource= (Get-Item $item_source.FullName).Get_LastWriteTime() 2>1                  $dateItemdest= (Get-Item $filetest).Get_LastWriteTime() 2>1         trap [System.Management.Automation.RuntimeException] { 'le fichier exite il sera créé'}         $dateCompare$dateItemSource.CompareTo($dateItemdest2>1 avec plus bas if ((test-Path "$filetest") -AND ($dateCompare -eq -1)) {     write-host "le fichier "$titre_element "le fichier existant est à la date du "$dateItemdest" "     }     else {



seulement étant données que dans ma premiere boucle je crais un fichier tid en fonction d'un fichier txt, le fameux fichier tid n'exite pas à
la premier itération de la boucle et me renvoi cette erreur:

Code:

 Impossible d’appeler une méthode dans une expression Null. Au caractère C:\Users\user\Google Drive \FICHIERS_DE_REFERENCES\ref_win\ps1\ref_pshell\tp_script_dl\1portv2.ps1:46 9 +         $dateItemdest= (Get-Item $filetest).Get_LastWriteTime() 2>1 +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo          InvalidOperation : (:) [], RuntimeException     FullyQualifiedErrorId InvokeMethodOnNull



si quelqu'un passe par la et que vous avez une astuce pour contourner ce soucis.

Message édité par: n3m0, à: 17/01/17 17:36
  | | L'administrateur a désactivé l'accés public en écriture.
Guillaume_F
Utilisateur

PowerShelleur Débutant
Messages: 43
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 17/01/17 09:32 Bonjour,

Comme ça je dirais qu'il faudrait créer une condition qui lui dirait d'effectuer ton action seulement si ton fichier ".tid" existe.
  | | L'administrateur a désactivé l'accés public en écriture.
n3m0
Utilisateur

PowerShelleur Débutant
Messages: 41
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 17/01/17 10:50 Bonjour,

effectivement c'était mon idée de départ mais il faut que je crée mon fichier tid.

je sais pas comment je dois m'y prendre....

j'arrive pas trop à avoir un truc clair en tête
  | | L'administrateur a désactivé l'accés public en écriture.
n3m0
Utilisateur

PowerShelleur Débutant
Messages: 41
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 17/01/17 13:23 En fait de tête je m'embrouillais et sur le papier vous aviez raison ça marche trés bien

j'ai juste ajouté ça

Code:

   if (test-Path "$filetest") {         $dateItemSource= (Get-Item $item_source.FullName).Get_LastWriteTime() 2>1         $dateItemdest= (Get-Item $filetest).Get_LastWriteTime() 2>1         #trap [System.Management.Automation.RuntimeException] { 'le fichier exite il sera créé'}         $dateCompare$dateItemSource.CompareTo($dateItemdest2>1         }



merci Guillaume_F
  | | L'administrateur a désactivé l'accés public en écriture.
Guillaume_F
Utilisateur

PowerShelleur Débutant
Messages: 43
graphgraph
Karma: 0  
Re:récupération valeur et comparaison - 17/01/17 14:32 De rien !
  | | L'administrateur a désactivé l'accés public en écriture.
© 2017 PowerShell-Scripting.com