Question
Sup. d'un fichier utilisé par un process (Résolu)
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 16 ans 5 mois #1257
par daniel soares
Sup. d'un fichier utilisé par un process (Résolu) a été créé par daniel soares
hello
Je tourne en rond sur un sujet que je vais tenter de vous expliquer
voila j'ai un fichier excel que je veux supprimer
[code:1]
$fichier =(new-object system.io.fileinfo nom.fichier)
if ($fichier.exists -eq $True) {$fichier.Delete()}
[/code:1]
simple sauf que si le fichier est ouvert je ne pourrais pas le supprimer
j'ai donc essayé de killer le processus
[code:1]
$excelproc = get-process | Where-Object {$_.processname -like \"excel\"}
Stop-Process -InputObject $excelproc
[/code:1]
mais le pb est que si j'ai plusieurs fichiers excel ouverts ils vont tous utiliser le meme processus et donc je vais tous les fermer meme ceux qui ne sont pas sauvegardés
dans le process j'ai bien la proprieté MainWindowTitle
mais elle me donne que le nom du fichier excel en avant plan
quand j'utilise l'objet -com excel je ne peux pas a priori retrouver les infos des processus excel deja lancés
en fait je voudrai soit fermer juste le fichier recherché sans toucher aux autres pour pouvoir le suprimer
soit killer le processus excel mais en m'assurant que tous les fichiers sont bien sauvegardés
quelqu'un a t'il une idée moi j'ai fais le tour et j'ai pas de solution<br><br>Message édité par: Arnaud, à: 30/11/07 09:59
Je tourne en rond sur un sujet que je vais tenter de vous expliquer
voila j'ai un fichier excel que je veux supprimer
[code:1]
$fichier =(new-object system.io.fileinfo nom.fichier)
if ($fichier.exists -eq $True) {$fichier.Delete()}
[/code:1]
simple sauf que si le fichier est ouvert je ne pourrais pas le supprimer
j'ai donc essayé de killer le processus
[code:1]
$excelproc = get-process | Where-Object {$_.processname -like \"excel\"}
Stop-Process -InputObject $excelproc
[/code:1]
mais le pb est que si j'ai plusieurs fichiers excel ouverts ils vont tous utiliser le meme processus et donc je vais tous les fermer meme ceux qui ne sont pas sauvegardés
dans le process j'ai bien la proprieté MainWindowTitle
mais elle me donne que le nom du fichier excel en avant plan
quand j'utilise l'objet -com excel je ne peux pas a priori retrouver les infos des processus excel deja lancés
en fait je voudrai soit fermer juste le fichier recherché sans toucher aux autres pour pouvoir le suprimer
soit killer le processus excel mais en m'assurant que tous les fichiers sont bien sauvegardés
quelqu'un a t'il une idée moi j'ai fais le tour et j'ai pas de solution<br><br>Message édité par: Arnaud, à: 30/11/07 09:59
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 5 mois #1258
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:suppression d'un fichier utilisé par un processus
Pour accéder à une instance en cours d'Excel, tu peux utiliser cette syntaxe:
[code:1]$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject(“excel.application”)[/code:1]
Tu peux ensuite énumérer les fichiers Excel ouverts (propriété Worksbooks) et éventuellement fermer celui que tu veux.
Au passage, je remarque ton usage astucieux de la classe FileInfo pour tester l'existence d'un fichier. Sache quand même qu'il existe une commandelette prévue pour ça: test-path.
[code:1]if (test-path monfichier.xls) {del monfichier.xls}[/code:1]
Janel
[code:1]$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject(“excel.application”)[/code:1]
Tu peux ensuite énumérer les fichiers Excel ouverts (propriété Worksbooks) et éventuellement fermer celui que tu veux.
Au passage, je remarque ton usage astucieux de la classe FileInfo pour tester l'existence d'un fichier. Sache quand même qu'il existe une commandelette prévue pour ça: test-path.
[code:1]if (test-path monfichier.xls) {del monfichier.xls}[/code:1]
Janel
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 16 ans 5 mois #1259
par daniel soares
Réponse de daniel soares sur le sujet Re:suppression d'un fichier utilisé par un process
Genial
en même temps powershell devient trop facile avec toi
donc le code devient
[code:1]
$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject(“excel.application”)
$CSVexist = $excel.Workbooks | Where-Object {$_.name -eq $CsvDeCryptedList}
if ($CSVexist -ne $null){$CSVexist.close()}
if (test-path $RepMorningCheck\$CsvDeCryptedList) {del $RepMorningCheck\$CsvDeCryptedList}
[/code:1]
par contre sais tu pourquoi powershell me refuse l'access a la proprieté $excel.workbooks.name
ca m'a obligé a utiliser la commande where-object
car $excel.workbooks.name n'existe pas ??????
en même temps powershell devient trop facile avec toi
donc le code devient
[code:1]
$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject(“excel.application”)
$CSVexist = $excel.Workbooks | Where-Object {$_.name -eq $CsvDeCryptedList}
if ($CSVexist -ne $null){$CSVexist.close()}
if (test-path $RepMorningCheck\$CsvDeCryptedList) {del $RepMorningCheck\$CsvDeCryptedList}
[/code:1]
par contre sais tu pourquoi powershell me refuse l'access a la proprieté $excel.workbooks.name
ca m'a obligé a utiliser la commande where-object
car $excel.workbooks.name n'existe pas ??????
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 5 mois #1260
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:suppression d'un fichier utilisé par un process
$excel.Workbooks est un tableau d'objets. Il faut accéder à un des objets en particulier pour pouvoir retrouver sa propriété name, ce que tu as fait en appliquant un filtre avec \"where\".
Janel
Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.067 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Sup. d'un fichier utilisé par un process (Résolu)