Fermeture automatique de fichiers

infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 13 juin 2017 à 11:59 - Dernière réponse : barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention
- 4 juil. 2017 à 09:20
Bonjour,

Je souhaiterais fermer automatiquement 2 fichiers qui sont en lecture seule sur les postes de mes utilisateurs ; la fermeture aurait lieu la nuit, afin que l'on puisse remplacer ces deux fichiers par deux autres (suite à mise à jour de la bdd).

La commande net file me paraît pas mal, mais quand je fais un essai sur mon ordi, le fichier reste ouvert (alors que la commande s'est bien exécutée...).

Le serveur est sous Windows 2008 r2.

Savez-vous ce que je dois faire ?

Merci par avance !



Afficher la suite 

21 réponses

Répondre au sujet
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - Modifié par barnabe0057 le 13/06/2017 à 18:48
0
Utile
Bonjour,

Tu as bien utilisé NET FILE avec l'ID du fichier et le commutateur /close ?


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Commenter la réponse de barnabe0057
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 15 juin 2017 à 16:24
0
Utile
8
Oui !

Je récupère l'id en faisant un NET CLOSE (1ère colonne de ce qui s'affiche), c'est bien cela ? (mais ce qui est bizarre il est vrai, c'est que pour un même fichier, j'ai plusieurs lignes et donc plusieurs id possibles...).

Merci !!!
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 15 juin 2017 à 17:02
J'ai improvisé un petit script batch :

@echo off

for /L %%A in (0,1,100) do (
echo ID : %%A
(net file %%A | findstr /I "test1.xlsx") && (call :fermeture %%A)
)

pause
exit

:fermeture
net file %1 /close
ping -n 1 localhost > nul
(net file %1 | findstr /I "test1.xlsx") && (call :fermeture %1)
goto :eof
rem

Ce script est à exécuter à l'aide du clic-droit "executer en tant qu'admin"

Dis-moi si ça va mieux ou pas.
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 19 juin 2017 à 10:53
Waouh, super, merci beaucoup !
J'essaierai demain matin à la première heure, je te tiens au courant !
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 20 juin 2017 à 12:20
Alors, juste une petite question avant d'essayer : je crois comprendre le principe du script, est-ce que tu peux juste m'expliquer la ligne avec le ping ?
Merci !!!
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 20 juin 2017 à 12:48
La ligne avec le ping c'est pour faire une temporisation d'1 seconde.
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 27 juin 2017 à 08:52
Bonjour,
Alors voilà, essayé ce matin :
la fenêtre de commande s'ouvre, le test d'ID s'effectue de 1 à 100 mais pour chaque valeur testée, j'ai le message suivant (pour l'exemple 22 ici) :

ID : 22
L'erreur système 2 s'est produite
Le fichier spécifié est introuvable


Quand je fais un net file, voici par exemple ce que j'obtiens pour mon fichier en question :

2751464421 d:\data\...\informatique\test.xls Magali 0

(l'ID n'est peut-être pas dans la plage ?)

Que puis-je faire ?
Commenter la réponse de infomag
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 27 juin 2017 à 11:47
0
Utile
10
Ok, alors au lieu de balayer une plage d'ID, on va chercher directement l'ID du fichier :

@echo off
chcp 1252 > nul
setlocal enableextensions enableDelayedExpansion

set "dv==::"
if defined !dv! (
echo. & echo ##### Veuillez lancer le script en Administrateur #####
timeout /t 5
endlocal & exit
)

for %%E in (test1.xls test2.xls) do (

for /f "tokens=1 delims= " %%A in ('net file ^| findstr /i "%%E"') do (call :fermeture %%A "%%E")

)

echo. & echo ##### Traitement terminé #####
echo. & pause
endlocal
exit

:fermeture
echo. & echo ID %1 en cours de fermeture ...
net file %1 /close
ping -n 2 localhost > nul
(>nul 2>&1 net file %1 | findstr /i "%~2") && (call :fermeture %1)
goto :eof
rem

barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 3 juil. 2017 à 19:00
Sinon tu peux utiliser NirCmd pour fermer des processus à distance, mais il faut le copier au préalable sur tous les postes clients :

http://www.nirsoft.net/utils/nircmd.html

Il faut voir aussi si l'antivirus ne va pas "tousser".
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 4 juil. 2017 à 08:52
Bonjour,
Alors sur le poste le plus suspect de laisser ces fichiers ouverts, je lance déjà la nuit une tâche programmée qui ferme le processus, mais je cherche justement une solution centralisée...

Mais le net file / close, normalement, ferme le fichier ou met le verrou à 0 ?
Merci à toi !!
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 4 juil. 2017 à 08:54
Chez moi ça ne ferme pas le fichier, mais ça le supprime de la liste obtenue par NET FILE.
infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 4 juil. 2017 à 09:17
Pareil, mais il faut le faire 2 fois - la 1ère fois, le fichier reste dans la liste en fichier temporaire (avec un ~).
C'est bizarre quand même, net file /close semble quand même fait pour fermer les fichiers, non ?
barnabe0057 11656 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > infomag 188 Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - 4 juil. 2017 à 09:20
Chez moi une fois suffit pour faire disparaître le fichier de la liste.

C'est bizarre comme tu dis, je suis aussi dubitatif que toi.
Commenter la réponse de barnabe0057