Pliki otwarte na zdalnym komputerze – NET FILE, OPENFILES.exe, czy PSFILE.exe?

Dzisiaj omówimy możliwość zdalnego listowania i zamykania otwartych plików – skupimy się jednak na Wierszu Poleceń. Choć podejrzenie i/lub zamknięcie plików na zdalnej maszynie poprzez przystawkę „Computer Management” (zarządzanie komputerem) jest bardzo proste i mamy też X przeróżnych programów działających w środowisku okienkowym,  to nieraz może nas irytować na przykład czas trwania tej operacji przy słabym łączu. Wiersz poleceń przyda się również, gdy często jesteśmy proszeniu o zamknięcie sesji tego samego pliku (na przykład, gdy kilka razy w tygodniu pani Krysia z działu personalnego skarży się, że plik „osoby_do_zwolnienia.doc jest zablokowany przez kogoś innego..” ). Odpowiednio przygotowany skrypt .bat wykona to zadanie w kilka sekund.

Czego użyjemy do listowania plików i ich zamykania? Dzisiaj zaproponuję Wam 3 opcje, z których Wy wybierzecie sobie najlepszą – ja podam Wam wady i zalety, a także podstawowe flagi.

 

NET FILE – funkcjonalność i ograniczenia

NET FILE służy do listowania i zamykania plików otwartych na lokalnym komputerze. Zamykanie odbywa się po ID pliku. NET FILE pokazuje sesje do plików, które znajdują się na tym komputerze  – które ktoś otworzył z innego komputera, ale nie pokazuje plików, które otworzono lokalnie – będąc na nim zalogowanym. Nie ma też przełącznika służącego do łączenia się ze zdalnym komputerem.

NET FILE – dostępność

Polecenie NET FILE występuje w Windowsach od bardzo dawna i znajdziemy go nawet w nowych Windows 8 i Windows 2012 –  nie trzeba więc nic dodatkowego doinstalować.

NET FILE – przykłady użycia

Samo polecenie NET FILE ( bez flag), wyświetli nam listę plików otwartych na tej maszynie z innych komputerów. Dane prezentowane są w kolejności: identyfikator pliku, ścieżka, nazwa użytkownika, liczba blokad

Zamknięcie pliku wykonamy podając jego ID np:

net file 603980501 /close

Na tym kończy się funkcjonalność NET FILE.

OPENFILES.exe – funkcjonalność i ograniczenia

Ten program służy do listowania i zamykania plików otwartych na lokalnym komputerze. Zamykanie odbywa się po ID pliku, nazwie i kilku innych możliwych kryteriach.

Występuje tu przełącznik do łączenia się z komputerem zdalnym, tak samo jak do formatowania wyświetlonych danych, czy zmiany kontekstu użytkownika. Kilka przykładów podałem niżej.

OPENFILES pokazuje sesje do plików, które znajdują się na tym komputerze – które ktoś otworzył z innego komputera, ale umie też pokazać pliki, które otworzono na nim lokalnie – tylko, że w efekcie zobaczymy zamiast nazw plików i ścieżek do nich – nazwę aplikacji/procesu i ścieżki w niezbyt czytelnej formie.. .

Oto mały fragmencik:

404 explorer.exe C:\..1e18e3b_9.0.30729.6161_none_08e61857a83bc251
508 explorer.exe C:\..4ccf1df_6.0.7601.17514_none_fa396087175ac9ac
572 explorer.exe C:\..4ccf1df_6.0.7601.17514_none_fa396087175ac9ac
604 explorer.exe C:\..4ccf1df_6.0.7601.17514_none_fa396087175ac9ac
660 explorer.exe C:\Windows\Fonts\StaticCache.dat
668 explorer.exe C:\..ccf1df_6.0.7600.16385_pl-pl_0fb7e7c8b1d41e9e

Tę funkcjonalność należy najpierw aktywować poleceniem:

Openfiles.exe /local on

Adekwatnie, wyłączenie tej opcji odbędzie się za pomocą:

Openfiles.exe /local off

Po wykonaniu którejś z tych komend musimy zrestartować naszą maszynę.
Aktywowanie tej funkcji znacznie wydłuża czas wyświetlania listy otwartych plików – zwłaszcza, jeśli lokalnie otwiera się znaczną liczbę plików. Osobiście nie korzystam z tego rozwiązania.

OPENFILES.exe – dostępność

Program OPENFILES.exe jest natywnie wbudowany w Windowsy od czasów XP / Windows Serwer 2003 i występuje do dziś.

 

OPENFILES.exe – lista otwartych plików

Poleceniem służącym do obejrzenia listy plików jest

openfiles.exe /query

Jak pewnie zauważycie, samo „openfiles” zrobi dokładnie to samo 🙂
Dane prezentowane są w formie: ID, nazwa użytkownika, typ, ścieżka. W oknie znajdziemy dwie listy: pliki otwarte lokalnie i zdalnie. Tak jak wyżej pisałem, pokazywanie plików otwartych lokalnie należy najpierw aktywować.

Aby wylistować pliki na zdalnej maszynie (zwróćcie uwagę, że przed nazwą komputera nie ma ukośników):

openfiles.exe /query /s komputer_zdalny

Jak zawsze w CMD istnieje możliwość filtrowania wyników prostym „findstr”. Tu znajdziemy plik lub pliki których nazwa zawiera fragment „zwolnienia.docx”.

openfiles.exe /query /s komputer_zdalny | findstr „zwolnienia.docx”

Opcjonalnie możemy wykonać to polecenie na poświadczeniach dowolnego użytkownika:

openfiles.exe /query /u (domena\)użytkownik /haslo

Format prezentowania danych możemy zmienić używając przełączników:

/FO table (domyślny taki jak na obrazku)
/FO csv (wszystkie informacje są oddzielone przecinkami
/FO LIST (wszystkie informacje są wyświetlone w osobnej linii)

OPENFILES.exe – zamykanie otwartych plików

Za pomocą OPENFILES.exe można zamknąć otwarte pliki. Podam kilka przykładów, a wszystkie opcje możecie podejrzeć sobie jak zawsze z przełącznikiem /?.

Zamknięcie pliku o konkretnym ID:

openfiles.exe /disconnect /ID 123456

Zamknięcie wszystkich plików otworzonych przez konkretnego użytkownika:

openfiles.exe /disconnect /A nazwa_użytkownika_używającego_plik

Zamknięcie konkretnego pliku po nazwie:

openfiles.exe /disconnect /A * /OP „ścieżka\nazwa_pliku”

Można używać symbolu * dla filtrowania fragmentów nazwy pliku. Uwaga! /OP trzeba użyć wraz z parametrem /A lub O. Te wartości też można zastąpić znakiem *.

PSFILE.EXE – funkcjonalność i ograniczenia
Alternatywą dla NET FILES i OPENFILES.exe jest programik z pakietu PSTOOLS – psfiles.exe. Narzędzie to pozwala listować pliki otwarte zdalnie na lokalnym lub zdalnym komputerze. Pozwala też zamykać sesje do plików po ID, nazwie, ścieżce lub ich fragmencie. Nie pozwala jednak zamknąć plików otwartych przez danego użytkownika – i tutaj OPENFILES.exe wygrywa 🙂

Sposób prezentacji danych jest według mnie mniej przejrzysty niż oferują pozostałe programy. Oczywiście po przekierowaniu wyniku z CMD do pliku, można te dane dowolnie obrabiać 🙂

PSFILE.EXE – dostępność
Program, jako jedyny z 3 wymienionych trzeba sobie doinstalować (konkretnie wkopiować – to zwykły plik .exe). Występuje on w pakiecie i można go ściągnąć z tej lokalizacji: http://download.sysinternals.com/files/PSTools.zip.

PSFILE.EXE– zamykanie otwartych plików
Zamknięcie pliku o konkretnym ID na maszynie lokalnej:

psfile.exe 1234567 -c

Zamkniecie konkretnego pliku po jego nazwie i ścieżce:

psfile.exe ścieżka\plik -c

Możemy użyć znaku * dla zastąpienia ciągu znaków.

Zamknięcie pliku o konkretnym ID na maszynie zdalnej:

psfile.exe \\nazwa_komputera 1234567 -c

Opcjonalnie, podobnie jak w innych programach PSTOOLS, możemy podać użytkownika i hasło (na którym wykona się to polecenie) – służą do tego parametry -u–p

Z podanych trzech propozycji musicie sobie wybrać swoją ulubioną. Ja, mimo, że jestem wielkim fanem PSTOOLS korzystam z OPENFILES.exe, bo bardzo przydaje się możliwość zamykania plików danego użytkownika. A Wy, co sądzicie?

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

7 komentarzy

  1. Szymon Biedrzycki napisał(a):

    Witam,

    PSFILE działa świetnie, warto by tylko dopisać do artykułu informację jak znaleźć ID pliku który chcemy zamknąć.

  2. Mirek napisał(a):

    Witam,
    u mnie trzy osoby używają o różnych porach dnia jeden plik xlsx który jest na serwerze (Windows Server 2008 R2)
    Oczywiście gdy jedna osoba ma go otwarty to reszta go nie używa, nawet do odczytu.
    Czasami jednak pojawiają się rożne problemy, ale nie o nich chcę pisać.
    Chodzi mi o to, czy da się zrobić tak, że zanim druga osoba otworzy ten sam plik czy może sprawdzić czy poprzednik na pewno zamknął ten plik?
    Oczywiście jeśli mogę jako administrator coś podobnego robić, to proszę o takie info.
    Dzięki

    • Łukasz Skalikow napisał(a):

      Mirek, podglądanie sesji otwartych plików wymaga praw admina. W Twoim scenariuszu, włączenie funkcji współdzielenia w Excelu wydaje się najsensowniejsze – wiele osób będzie mogło używać i zapisywać ten sam plik jednocześnie. Czy istnieje jakiś powód, dla którego nie możesz używać współdzielenia?

  3. Mirek napisał(a):

    Używać i zapisywać ten plik jednocześnie? To da się tak? Do tej pory spotkałem się z tym, że druga osoba mogła używać tylko do odczytu gdy pierwsza go edytowała…
    To jest plik excela i te osoby uzupełniają jeden arkusz wiersz po wierszu…więc jakąś ciągłość muszą zachować…
    Więc wydaje mi się, że używanie tego pliku w jednym czasie przez wszystkie osoby jest niemożliwe w sensie zadań jakie mają…
    Natomiast problem jest czasami taki, że jedna osoba używa tego pliku powiedzmy przez pół godziny, następnie go zamyka i gdy druga osoba chce go otworzyć to mimo, że pierwsza go zamknęła, nadal chce się ten plik otworzyć tylko do odczytu…
    CO z kolei wprowadza w irytację pracownika, co się trochę odbija na mnie…
    Nie wiem wtedy w czym jest problem…może z siecią…
    Dlatego szukam sposobu co zrobić żeby na 100% zamknąć ten plik…

  4. Mirek napisał(a):

    Ok, nie znałem tego. Na pewno przetestuję to sam na dwóch kompach i zaproponuję zainteresowanym, jeśli zaakceptują zmiany i będą zadowoleni na pewno się tym pochwalę 🙂
    Dzięki za porady Darka.

  5. Mirek napisał(a):

    Pobawiłem się i o to chodziło, czyli świetne rozwiązanie jeśli chodzi o używanie tego samego pliku w tym samym czasie przez kilka osób (często jest tak, że kilka osób musi mieć otwarty ten sam plik w tym samym czasie).
    Jest tylko jeden mały problem, nie widać na żywo kto ile już wierszy uzupełnił i raczej nie doczytałem jak ten problem rozwiązać, ale nie można mieć wszystkiego i zaproponuję im żeby umawiali się od którego do którego wiersza kto zapisuje żeby sobie nie zapisali tylko swoich zadań.
    Opcja:
    zaakceptuj inne
    zaakceptuj moje
    nie pasuje tutaj ponieważ oni muszą zaakceptować wszystko to co wprowadzili i jedni i drudzy, ale to i tak będzie duże ułatwienie to współdzielenie.
    Dzięki jeszcze raz

Dodaj komentarz