Question
[resolu ]récupération valeur et comparaison
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 9 ans 4 mois #22899
par hays
[resolu ]récupération valeur et comparaison a été créé par hays
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:1]
TypeName : System.IO.FileInfo
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property string DirectoryName {get;}
[/code:1]
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:1]# 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\"
}
}
[/code:1]
j'ai pas encore trop cherché pour comparer les dates mais je suis preneur pour tout commentaire.
merci beaucoup<br><br>Message édité par: farid, à: 17/01/17 16:15
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:1]
TypeName : System.IO.FileInfo
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property string DirectoryName {get;}
[/code:1]
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:1]# 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\"
}
}
[/code:1]
j'ai pas encore trop cherché pour comparer les dates mais je suis preneur pour tout commentaire.
merci beaucoup<br><br>Message édité par: farid, à: 17/01/17 16:15
Connexion ou Créer un compte pour participer à la conversation.
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 9 ans 4 mois #22900
par hays
Réponse de hays sur le sujet Re:récupération valeur et comparaison
Bonjour,
finalement j'ai réglé le premier problème c'était trop simple en fait j'ai honte d'avoir demandé
[code:1]$tags= $item_source.Directory
$tagstitle= $tags.BaseName[/code:1]
il me reste le second problème, je ne sais pas trop comme je dois m'y prendre pour comparer les deux date lastWritetime...
finalement j'ai réglé le premier problème c'était trop simple en fait j'ai honte d'avoir demandé
[code:1]$tags= $item_source.Directory
$tagstitle= $tags.BaseName[/code:1]
il me reste le second problème, je ne sais pas trop comme je dois m'y prendre pour comparer les deux date lastWritetime...
Connexion ou Créer un compte pour participer à la conversation.
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 9 ans 4 mois #22938
par hays
Réponse de hays sur le sujet Re:récupération valeur et comparaison
Bonjour,
voici ce que je fais pour comparer les dates en écritures de deux fichier
[code:1]
$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($dateItemdest) 2>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 {[/code:1]
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:1]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[/code:1]
si quelqu'un passe par la et que vous avez une astuce pour contourner ce soucis.<br><br>Message édité par: n3m0, à: 17/01/17 17:36
voici ce que je fais pour comparer les dates en écritures de deux fichier
[code:1]
$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($dateItemdest) 2>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 {[/code:1]
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:1]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[/code:1]
si quelqu'un passe par la et que vous avez une astuce pour contourner ce soucis.<br><br>Message édité par: n3m0, à: 17/01/17 17:36
Connexion ou Créer un compte pour participer à la conversation.
- Guillaume
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
il y a 9 ans 4 mois #22939
par Guillaume
Réponse de Guillaume sur le sujet Re:récupération valeur et comparaison
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.
Comme ça je dirais qu'il faudrait créer une condition qui lui dirait d'effectuer ton action seulement si ton fichier \".tid\" existe.
Connexion ou Créer un compte pour participer à la conversation.
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 9 ans 4 mois #22942
par hays
Réponse de hays sur le sujet Re:récupération valeur et comparaison
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
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
Connexion ou Créer un compte pour participer à la conversation.
- hays
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 41
- Remerciements reçus 0
il y a 9 ans 4 mois #22946
par hays
Réponse de hays sur le sujet Re:récupération valeur et comparaison
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:1] 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($dateItemdest) 2>1
}[/code:1]
merci Guillaume_F
j'ai juste ajouté ça
[code:1] 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($dateItemdest) 2>1
}[/code:1]
merci Guillaume_F
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [resolu ]récupération valeur et comparaison