Signaler

Fermeture automatique de fichiers

Posez votre question infomag 188Messages postés jeudi 27 mars 2008Date d'inscription 11 juillet 2017 Dernière intervention - Dernière réponse le 4 juil. 2017 à 09:20 par barnabe0057
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 !



Utile
+0
plus moins
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.”
Donnez votre avis
Utile
+0
plus moins
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 11572Messages postés lundi 2 mars 2009Date d'inscription ContributeurStatut 16 octobre 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.
Répondre
infomag 188Messages 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 !
Répondre
infomag 188Messages 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 !!!
Répondre
barnabe0057 11572Messages postés lundi 2 mars 2009Date d'inscription ContributeurStatut 16 octobre 2017 Dernière intervention - 20 juin 2017 à 12:48
La ligne avec le ping c'est pour faire une temporisation d'1 seconde.
Répondre
infomag 188Messages 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 ?
Répondre
Donnez votre avis
Utile
+0
plus moins
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 11572Messages postés lundi 2 mars 2009Date d'inscription ContributeurStatut 16 octobre 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".
Répondre
infomag 188Messages 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 !!
Répondre
barnabe0057 11572Messages postés lundi 2 mars 2009Date d'inscription ContributeurStatut 16 octobre 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.
Répondre
infomag 188Messages 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 ?
Répondre
barnabe0057 11572Messages postés lundi 2 mars 2009Date d'inscription ContributeurStatut 16 octobre 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !