2015-12-01 27 views
5

Chciałbym dodać do menu kontekstowego to nice shell script który automatycznie usuwa wszystkie puste foldery i podfoldery w folderze jest prowadzony od:Dodaj „Usuwanie pustych folderów” to Windows menu kontekstowego

for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d" 

Aby dodać takie element do menu (katalogi) kontekstowego należy uruchomić plik z rozszerzeniem reg o zawartości podobnej do

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders] 

[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders\Command] 
@=for /f "usebackq delims=" %%d in (`"dir %1 /ad/b/s | sort /R"`) do rd "%%d" 

ale ten nie działa. W jaki sposób należy go naprawić, aby poprawnie uruchomić skrypt jednej powłoki liniowej?

+0

Umieść kod w pliku .bat, umieść plik bat i identyfikator argumentu w kluczu reg. –

+1

@Alex: Powinno być możliwe przez wywołanie 'cmd/c' z resztą wiersza poleceń. – Joey

+0

@Joey Użycie '@ =" cmd/c dla/f \ "usebackq delims = \" %% dw (\ '\" dir% 1/ad/b/s | sort/R \ "\') do rd \ "%% d \" "' Udało mi się usunąć puste foldery w niektórych pozycjach, ale nie wszędzie, czy możesz je rozwinąć? – mmj

Odpowiedz

5

Dzięki komentarzowi Joey'a udało mi się znaleźć następujące rozwiązanie.

Krok 1: utworzyć plik z reg rozszerzenia (jak na przykład add_delete_empty_folders_to_context_menu.reg) i umieścić następujące linie wewnątrz niego:

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders] 

[HKEY_CLASSES_ROOT\Directory\shell\Delete empty folders\Command] 
@="cmd /c for /f \"usebackq delims=\" %%d in (`\"dir \"%1\" /ad/b/s | sort /R\"`) do rd \"%%d\"" 

Krok 2: podwójne kliknięcie na pliku reg i dać wszystkie potrzebne potwierdzeń.

Teraz masz wygodne polecenie z menu kontekstowego, które pojawia się po kliknięciu katalogu prawym przyciskiem myszy. Działa to dla mnie na Windows 7 i Windows 10.

Unikaj nadużywania tej funkcji, niektóre oprogramowanie wymaga, aby puste foldery działały poprawnie.

Kontynuacja

Jeśli wystąpią problemy (jak Enora, patrz niżej) można spróbować użyć następujący wiersz w pliku reg w miejsce pierwotnego:

@="cmd.exe /K for /f \"usebackq delims=\" %%d in (`\"dir \"%V\" /ad/b/s | sort /R\"`) do rd \"%%~d\"" 

Właściwie to nie wiem, czy ta wersja jest solidniejsza, po prostu zgłaszam tutaj solution znaleziony przez Enorę dla jej sprawy.

+0

To działa ładnie. Czy możesz również dołączyć wersję, która dodaje jakąś ikonę do tej opcji w menu kontekstowym? – TMRW

+0

@TMRW Przepraszamy, to jest ponad moją wiedzę. Może ktoś inny będzie w stanie pomóc w tym. – mmj

+0

Np. Myślę, że mogę to zrobić z odrobiną badań. – TMRW