15Jul

Z łatwością wymień zablokowany plik, gdy zostanie odblokowany

Jeśli próbujesz zaktualizować niektóre pliki systemu Windows( takie jak programy lub dokumenty tekstowe), gdy są one używane, otrzymasz standardowy błąd "odmowa dostępu, plik jest w użyciu".Chociaż rozumowanie jest oczywiste, może być dość irytujące, jeśli musisz zaktualizować mały plik wykonywalny, który jest aktualnie używany przez innego użytkownika. W takich sytuacjach masz między innymi następujące opcje, z których wszystkie wiążą się z Twoim cennym czasem:

  • Śledź i kontaktuj się z użytkownikami, którzy aktualnie używają pliku, powiedz im, aby zamknął / zapisz ich pracę itp.następnie zastosuj aktualizację.
  • Nie stosuj aktualizacji natychmiast i pamiętaj, aby zrobić to później, gdy użytkownicy nie są w systemie.
  • Zaplanuj trochę narzędzia, aby zastąpić je przy następnym uruchomieniu.

Mamy dla Ciebie inne rozwiązanie: skrypt wywoływany za pomocą menu Wyślij do, który wykonuje następujące czynności:

  1. Próbuje usunąć stary plik.
  2. Jeśli stary plik jest zablokowany, skrypt czeka 20 sekund. Przejdź do kroku 1.
  3. Jeśli stary plik nie jest zablokowany, stary plik zostanie zastąpiony nowym plikiem. Przejdź do kroku 4.
  4. Opcjonalnie wyloguj się po zakończeniu procesu.

W ten sposób otrzymasz po prostu polecenie replace w ruchu, a skrypt zajmie się resztą.Może to pomóc w uniknięciu śledzenia użytkowników lub konieczności instalowania niepotrzebnych narzędzi w systemie.

Konfiguracja i użytkowanie

Skrypt można umieścić w dowolnym miejscu w systemie. Następnie wystarczy utworzyć skrót do niego w folderze SendTo:

Aby rozpocząć proces zamiany, wybierz stary plik i nowy plik, a następnie wywołaj opcję Wyślij do, klikając prawym przyciskiem myszy stary plik / plik , aby zastąpić.

Skrypt będzie wyświetlał dokładnie to, co się stanie i przedstawia opcję wylogowania po zakończeniu zamiany.

Skrypt będzie nieustannie próbował usunąć stary plik, czekając kilka sekund pomiędzy próbami.

Wszystko, co musisz zrobić, to uruchomić proces, a gdy wszyscy twoi użytkownicy się wylegną, plik zostanie zastąpiony.

Zabezpieczenia

Skrypt ma kilka wbudowanych zabezpieczeń:

  • Stary plik i nowy plik są wyraźnie przedstawione, więc wiesz dokładnie, co się stanie.
  • Możesz zamknąć okno poleceń w dowolnym momencie, aby zatrzymać akcję( oczywiście zakładając, że zamiana nie została już wykonana).
  • Skrypt sprawi, że wybrałeś tylko dwa pliki po wywołaniu polecenia Wyślij do. Jeśli wybierzesz na przykład 1 lub 3 pliki, otrzymasz wiadomość z powiadomieniem i nic się nie wydarzy.

Skrypt

@ECHO OFF TITLE Wymień zablokowany plik ECHO Wymień zablokowany plik ECHO Napisane przez: Jason Faulkner ECHO SysadminGeek.com ECHO.ECHO.SETLOCAL EnableExtensions REM Validation. SET Error = 1 JEŻELI{ % 2} =={ }( ECHO Dwa pliki muszą zostać wybrane, aby uruchomić zamianę GOTO End) JEŚLI NIE{ % 3} =={ }( ECHO Wybrano więcej niż 2 pliki, więc nie jestemco zrobić, GOTO End) SET Error = 0 SET OldFile = "% ~ f1" SET NewFile = "% ~ f2" SET LogOffWhenDone = 0 REM Pokaż, co się stanie, abyś miał szansę na anulowanie. Stary plik ECHO:% Stary plik% ECHO --------- Nowy plik ECHO:% NewFile% ECHO.ECHO Możesz anulować zastąpienie Starego pliku nowym plikiem, zamykając go teraz. ECHO.Pytanie wylogowania REM.Jeśli nie chcesz tego widzieć, możesz usunąć te linie. ECHO Automatycznie wylogować się po zakończeniu procesu zamiany? ECHO Wpisz "Y", aby automatycznie wylogować się lub wprowadzić cokolwiek innego, aby nie. SET / P LogOffWhenDone =: DoReplace DEL / F / Q% OldFile% IF NOT EXIST% OldFile%( MOVE% NewFile%% OldFile% Plik ECHO został zastąpiony pomyślnie GOTO End) ECHO.ECHO Stary plik jest nadal zablokowany. Czekam kilka chwil, aby spróbować ponownie. TIMEOUT / T 20 GOTO DoReplace: End IF{ % Error%} =={ 1}( ECHO Instrukcja użycia: ECHO 1. Wybierz dwa pliki w Eksploratorze Windows ECHO 2. Kliknij prawym przyciskiem myszy stary plik i wybierz Wyślij do -Zastąp Zablokowany plik ECHO ECHO Prawy kliknięty plik zostanie zastąpiony innym wybranym plikiem ECHO ECHO Zatrzymanie bezczynności Naciśnij dowolny klawisz, aby zamknąć TIMEOUT / T 15) IF / I{ % LogOffWhenDone%} =={Y}( ECHO. Opcja ECHO do wylogowania po wybraniu została zakończona ECHO Niedługo wylogujesz się. SHUTDOWN / L) ENDLOCAL

Linki

Pobierz ReplaceFile Script z SysadminGeek.com