Korzystanie ze ścieżek względnych dla skrótów Windows

49

Mam schemat folderów jak (wersja bardzo uproszczona):

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

... i chciałbym mieć skrót w każdym folderze z folderów podrzędnych „Nowe pliki” do folderu podrzędnego „Testowane pliki”. Ale ten folder może być od czasu do czasu przenoszony, co zepsuje wspomniane skróty.

Czy istnieje sposób na utworzenie względnego skrótu do każdego folderu? Pamiętam, jak robiłem to w HTML, w którym można było ustawić ścieżkę, coś w stylu .../Filespowrotu do rodzica, a następnie do nowego folderu, ale nie jestem pewien, czy jest to coś pod skrótami Windows?

PS: Przypadek podobnie względnych skrótów, gdy celem jest plik, jest omówiony w https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- folder-jest . W niniejszym przypadku celem jest folder.

Gary Morris
źródło
1
Próbowałeś ../Filesz dwiema kropkami? Nie używam systemu Windows, ale myślę, że może działać.
Brian Z
1
Ale to pierwsza rzecz, której spróbowałem, dzięki. :(
Gary Morris
stackoverflow.com/q/1169556/2707864
sancho.s Przywróć Monikę
@ sancho.s - AFAIK, odpowiedzi tam działają tylko do wykonywania plików .bat. Potrzebne jest tutaj odniesienie do folderu.
ToolmakerSteve,
@ToolmakerSteve - Chyba sprawdziłeś / przeczytałeś „odpowiedzi tam” tylko powierzchownie. Jednym z nich ( stackoverflow.com/a/1751350/2707864 ) jest tutaj przyjęte rozwiązanie, przy czym jedno z nich to ok. 4 lata starszy. Nie próbowałem tego. Kolejnym ( stackoverflow.com/a/29261618/2707864 ) jest druga połowa przyjętego rozwiązania tutaj. Skomentowałeś nawet ten. Próbowałem i działa. Umieszczanie komentarza nie jest konieczne, ale należy starać się nie wprowadzać czytelników w błąd.
sancho.s Przywróć Monikę

Odpowiedzi:

50

Możesz użyć tego narzędzia: Względne .

Zasadniczo tworzy skrót do „explorer.exe” z parametrem ścieżki względnej za pomocą kliknięcia prawym przyciskiem (tak samo jak w przypadku zwykłego skrótu).

Oczywiście możesz to zrobić ręcznie.
W twoim przykładzie utworzyłbyś skrót w „New Files \ Tools” do

%windir%\explorer.exe "..\..\Tested Files\Tools"

Możesz użyć do tego zwykłego menu kontekstowego „Nowy / Utwórz skrót” systemu Windows i wpisać powyższe polecenie w polu „Wpisz lokalizację elementu”.

Rik
źródło
Czytałem o tym podczas moich wcześniejszych badań, ale liczyłem na natywne rozwiązanie w Eksploratorze. To będzie mój plan tworzenia kopii zapasowych, na zdrowie.
Gary Morris
Nawiasem mówiąc, czy ta względna ścieżka pozostanie taka sama między systemami? Czy będę musiał zainstalować aplikację Relative, jeśli przeniosę foldery / zawartość między różnymi systemami?
Gary Morris,
3
„Względny” tworzy skrót tylko przy użyciu standardowego „% windir% \ explorer.exe”, więc nie potrzebujesz Względnego w innym systemie. Byłoby to tak samo jak pisanie %windir%\explorer.exeprzed ścieżką względną podczas tworzenia standardowego skrótu. Więc jeśli zrobisz to ręcznie, wcale nie będziesz potrzebować funkcji względnej. (Musisz tylko pamiętać polecenie przed względną ścieżką)
Rik
Ach, przepraszam, źle zrozumiałem tę część twojej pierwszej odpowiedzi, moje złe! Dzięki wielkie!
Gary Morris,
2
Ręczne rozwiązanie tutaj nie działa dla mnie po wyjęciu z pudełka. Ponadto muszę zmienić „Rozpocznij w” z %windir%na pusty.
notan3xit
30

Jednym z możliwych rozwiązań jest użycie jednowierszowego pliku wsadowego zamiast skrótu, aby otworzyć wszystko, co chcesz otworzyć. Plik wsadowy pozwoli ci na użycie ścieżek względnych i będzie miał katalog roboczy dowolnego folderu, w którym znajduje się plik wsadowy.


Inną opcją jest uruchomienie skrótu cmd.exezamiast tego, co uruchamiasz, a następnie przekazanie tego, co uruchamiasz, jako argumentcmd.exe

wprowadź opis zdjęcia tutaj

%COMSPEC%to zmienna środowiskowa domyślnie wskazuje wiersz polecenia .

/C powoduje zamknięcie się konsoli po wykonaniu polecenia.

Scott Chamberlain
źródło
Dziękuję Ci bardzo! To zadziałało dla mnie. Spędziłem godziny, starając się, aby mój skrót wykonał skrypt powłoki powłoki w tym samym katalogu.
Shervin Shahrdar,
Przydatne w innej sytuacji, jednak pytanie nie dotyczy otwarcia jakiegoś pliku; chodzi o możliwość przejścia do określonego folderu w Eksploratorze Windows. Czy istnieje sposób na dostosowanie tej odpowiedzi?
ToolmakerSteve,
7

Ta sztuczka działa:

% COMSPEC% / C start „nazwa exe bez ścieżki”

przykład

% COMSPEC% / C start winmine.exe

Alexis PERROTTEY
źródło
2
Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie.
DavidPostill
1
W przypadku Win10 1607 to rozwiązanie doskonale odpowiada na pytanie OP: Cel: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Rozpocznij za: [pozostaw puste]
semtex41
@ semtex41 Huh? Próbuję tego, a wynikiem jest okno dialogowe z błędem: „System Windows nie może znaleźć„ GoogleChromePortable ”. Co to ma wspólnego z celem OP, jakim jest nawigacja Eksploratora Windows do określonego folderu?
ToolmakerSteve
@ToolmakerSteve dobrze tytuł brzmi: „Korzystanie ze ścieżek względnych dla skrótów Windows” i przyczyniałem się do wcześniej dostarczonej odpowiedzi. A celem PO jest tak naprawdę uczynienie ścieżek dynamicznymi, a nie statycznymi. Ponieważ moja odpowiedź brzmi, jak utworzyłem skrót, który działa w niestatycznej ścieżce, wierzę, że moja odpowiedź pasuje.
semtex41,
@ semtex41- Stwierdzonym celem OP jest „.. skrót .. do folderu potomnego„ Testowanych plików ”. Jeśli nie wyjaśniając, w jaki sposób mają tę odpowiedź tego dokonać, należy wyjaśnić, co było dodanie do odpowiedzi. Wygląda na to, że podałeś kolejny przykład wykonania pliku .exe. Ale odpowiedź już pokazuje taki przykład. Więc proszę ponownie podać punkt, który podałeś?
ToolmakerSteve,
6

Korzystam z podobnego rozwiązania w szablonie, który uruchamia moje środowisko programistyczne (otwórz katalog projektu, otwórz przeglądarkę, uruchom WAMP, uruchom SCSS ...)

wprowadź opis zdjęcia tutaj

Mogę przekazywać argumenty do mojego skryptu nietoperza itp., To jest fajne. Pamiętaj o umieszczeniu /cargumentu pocmd.exe

Hrvoje Golcic
źródło
2

Możesz użyć mklink . Pozwala tworzyć dowiązania symboliczne, dowiązania twarde i dowiązania katalogu.

 mklink /d Tools "..\Tested Files\Tools"  (elevated command prompt)

Jeśli nie ma podwyższonego dostępu, możesz użyć / j

 mklink /j Tools "..\Tested Files\Tools"

Aby poruszać się po całej strukturze, należy użyć polecenia xcopy . Na przykład, jeśli cała struktura znajduje się w kontenerze :

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

wprowadzanie polecenia

 copy /b /e container container2

utworzy następującą strukturę:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

Przełącznik / b skopiuje łącza symboliczne zamiast konwertować je do folderów.

Krauss
źródło
Ale czy ten link nadal będzie poprawny, jeśli zestaw folderów zostanie przeniesiony w inne miejsce?
ToolmakerSteve,
Wymaga to przywilejów, których nie mam, choć wygląda na to, że wykonałby to zadanie ... Czy miałbyś coś przeciwko opublikowaniu obrazu wynikowych właściwości skrótu, po jego utworzeniu?
sancho.s Przywróć Monikę
Linki są rzeczywiście poprawne. Można to potwierdzić poleceniem „dir”. Problem polega na tym, że działania „kopiuj-wklej”, „przenieś” i „kopiuj” Menedżera plików zniszczą strukturę. Zmodyfikowałem odpowiedź, aby uwzględnić obejście.
Krauss
1

Skrót może zapisać swoją lokalizację w zmiennej i wywołać polecenie za pomocą zmiennej. Na przykład utwórz skrót „Dziadek” z celem:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

Utwórz plik wsadowy „C: \ Here.bat” za pomocą pojedynczego wiersza:

@%windir%\explorer.exe /n,/select, %HERE%

Teraz, bez względu na folder, w którym znajduje się Dziadek, po kliknięciu go, otwiera się jego folder macierzysty. Działa nawet z dziadkiem w katalogu głównym.

Twój plik wsadowy mógł użyć% HERE% do uruchomienia czegoś innego niż explorer.exe. Lub zamiast Here.bat po znaku && w skrócie możesz wywołać program korzystający z% HERE%.

W moim systemie dziadek wydaje się współpracować z & lub &&.

mudr
źródło
1
&&wykonuje następne połączenie tylko wtedy, gdy poprzednie połączenie nie zwróciło błędu, a &nie obchodzi go to. W takim przypadku nie powinno być różnicy.
leewz
1

Jeśli pozostawisz 'Start In'puste pole we właściwościach skrótu, łącza będą względne w stosunku do bieżącego katalogu roboczego.

Zobacz także https://stackoverflow.com/a/17951772/40961

David d C e Freitas
źródło
W jaki sposób pomaga to celowi OP, jakim jest nawigacja Eksploratora Windows do określonego folderu?
ToolmakerSteve,
Jeśli miałeś problem, to rozwiązanie ma sens ... jak twój komentarz pomaga w każdej odpowiedzi?
David d C e Freitas
0

Możesz utworzyć zmienną środowiskową, która zawiera (względną) ścieżkę do folderu docelowego lub folderu nad nim w strukturze systemu plików.

Przykład:

  • Zmienna środowiskowa:

    % Dropbox% = "C: \ Users \ User 1 \ Dropbox"

  • Cel skrótu:

    „% Dropbox% \ Install \ Utilities \ File.exe”

Za pomocą polecenia DOS SETX można tworzyć zmienne środowiskowe.

gmoises
źródło