Bonjour à tous,
Je suis en train de sécher sur une demande qu'on m'a faite qui avait l'air toute simple dans ma tête ......
Dans un répertoire DOSSIER un script (exécuté toutes les 2 mn) prend un répertoire que nous allons appeler test qui contient des fichiers xml, traite les xml et quand il a fini il copie le répertoire en test_traite et supprime le répertoire test.
Le répertoire DOSSIER contient des milliers de répertoire (et donc que des répertoires sous la forme XXXXX_traite) mais de temps en temps le script n'arrive pas a supprimer le répertoire d'origine avant traitement.
On se retrouve donc avec TEST et TEST_traite et cela bloque un autre programme qui lui vient lire ce répertoire DOSSIER car il ne veut voir que des XXXX_traite.
Du coup j’essaie de faire en vain un script qui serait capable de supprimer le répertoire XXXX en laissant le XXXX_traite seulement si XXXX_traite existe ..... voici mon code début de code :
Jusqu'ici tout va bien je me retrouve avec 2 fichiers csv, un avec les noms de tout les répertoire dans DOSSIER et l'autre avec uniquement les noms des répertoire finissant par _traite dans DOSSIER
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $path = "E:\temp\DOSSIER" $path2 = "E:\temp\" dir $path\*_traite | Select-Object -ExpandProperty Name > $path2\fichiertraite.csv dir $path\* | Select-Object -ExpandProperty Name > $path2\fichiercomplet.csv $first = Import-Csv E:\temp\fichiertraite.csv $last = Import-Csv E:\temp\fichiercomplet.csv
Du coup je cherche à comparer ces deux csv pour n'avoir uniquement qu'une liste de nom XXXX pour faire un foreeach-object -> delete XXXX
Mais je coince à la comparaison et surtout à la réponse de cette commande :
Compare-Object -ReferenceObject $last -DifferenceObject $first | ?{$_.sideIndicator -eq "<="} | select inputobject > E:\temp\resultat.txt
La sortie ne m'affiche jamais ce que je veux. Je suis peut être pas trop claire alors désolé.
Je suis novice en powershell et j'ai aussi du mal à voir la suite de mon script avec foreeach.
Ce n'est peut être pas la bonne voie pour faire ce que veux aussi, quelqu'un aurait-il une idée pour mon problème.
Merci d'avance car depuis 2 jours je me liquéfie de plus en plus.
ps: je précise forcement en powershell ou ms-dos au pire !
Partager