Automatyczne wykonywanie poleceń po otwarciu wiersza polecenia

17

Szukam sposobu na automatyczne wykonanie niektórych poleceń konsoli po otwarciu wiersza polecenia w systemie Windows, w szczególności w celu ustawienia niektórych aliasów poleceń.

Na przykład po otwarciu wiersza polecenia chcę, aby polecenie, takie jak poniższe, było uruchamiane automatycznie, aby móc używać lszamiast dir.

doskey ls=dir

Jak można to zrobić?

Daniel Williams
źródło
3
Windows XP nie ma DOS.
grawity
@KContreau, interessant. Tak więc powodem, dla którego moje partie nie zapisują podkluczów doskey po poleceniu „start / oddziel”, ale tylko „cmd / k” lub „cmd / c” ...
kokbira
czy musimy zmienić tytuł pytania po edycji „Wyjaśnienie”?
kokbira
1
@KCotreau: Technicznie jest to część podsystemu Win32 Console, która nie jest specyficzna dla cmd.exe.
grawity

Odpowiedzi:

8

Jeśli chcesz, aby ładował się przy starcie, a nie po zalogowaniu, jeśli masz XP Pro (XP home nie zawiera gpedit.msc), zrób to:

Start> Uruchom> gpedit.msc

i naciśnij Enter. Następnie uruchom gpupdate / force z wiersza poleceń.

Iść do

Konfiguracja komputera> Ustawienia systemu Windows> Skrypty> Uruchomienie

i dodaj lokalizację do skryptu.

Możesz to zrobić również dla logowania użytkownika

Konfiguracja użytkownika> Ustawienia systemu Windows> Skrypty> Uruchomienie

Jeśli masz XP Home, możesz skopiować skrypty do:

C: Windows Windows32 GroupPolicy Machine Skrypty Uruchamianie

za załadowanie ich przy starcie lub:

C: Windows System32 GroupPolicy Skrypty użytkownika Zaloguj się

do załadowania ich dla użytkownika podczas logowania. Folder GroupPolicy jest ukryty.

KCotreau
źródło
1
Wolałbym, aby ta metoda została umieszczona w folderze startowym. Sprawia, że ​​jest bardziej trwały.
Joe Taylor
1
@ Joe Taylor Dzięki. Szczerze mówiąc, używam tylko folderu Autostart do rzeczy takich jak uruchamianie programu Outlook. Jest to bardziej standardowy sposób robienia tego z punktu widzenia administracji systemu.
KCotreau
@KContreau, twoje rozwiązanie jest bardzo przydatne, ale nie w tym przypadku. Testowałem, ale nie działa dla polecenia podstawienia
doskey
@kokbira Pierwotnym pytaniem było po prostu „Jak uruchomić skrypt przy starcie w XP?”, który, jak sądzę, odpowiedziałem dokładnie. Zmontował i dodał część „na przykład i doskey ls = dir” po.
KCotreau
1
@Kontreau, masz rację, problem polega na tym, że tytuł tego pytania jest nieprawidłowy. W „Wyjaśnieniu” powiedział, że chce „uruchamiać niektóre polecenia DOS, gdy uruchamiam znak zachęty DOS, głównie po to, by ustawić kilka aliasów ”. Aby wykonać pewne polecenia podczas uruchamiania systemu Windows, twoje rozwiązanie jest w porządku, ale aby uruchomić aliasy, nie jest.
kokbira
43

Aliasy poleceń są specyficzne dla okna konsoli, w którym je konfigurujesz, dlatego skrypt uruchamiania nie będzie działać. Możesz to zrobić w ten sposób:

  1. Utwórz plik wsadowy ( .cmd) za pomocą poleceń doskey , umieść go gdzieś w Danych aplikacji.

  2. Skonfiguruj go, aby był uruchamiany automatycznie przy każdym otwarciu cmd . Ustawienie znajduje się w Rejestrze:

    • klawisz: HKCU\SOFTWARE\Microsoft\Command Processor
    • wartość: AutoRun
    • typ: REG_EXPAND_SZ
    • dane: "%AppData%\aliases.cmd"
grawity
źródło
To było świetne rozwiązanie dla wirtualnego systemu operacyjnego Win2K, w którym chciałem, aby wiersz poleceń zawsze ładował moje ścieżki kompilatora. Jedyną różnicą było użycie REG_SZ zamiast REG_EXPAND_SZ
James
To ładne rozwiązanie. Czy przypadkiem nie ma sposobu na zlikwidowanie początkowego wyjścia?
nburr
1
@Nickolas: Po prostu przekierowuj polecenia do NUL jak zawsze?
grawity
Działa to pięknie JEDNAKŻE może zakłócać działanie kompilatora zasobów systemu Windows (rc.exe) powodującego błędy takie jak „System nie może znaleźć określonej ścieżki”. Zobacz projekt Visual Studio Shell Isolated nie kompiluje .
Użytkownik5910
Naprawiłem to, ustawiając najpierw sprawdzenie istnienia pliku:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910
4

Różne interpretery poleceń obsługują aliasy poleceń na różne sposoby.

CMD Microsoftu polega na podsystemie konsoli Win32, aby zapewnić mechanizm aliasingu poleceń. doskeyKomenda faktycznie współdziała z konsoli procesu, a to jest sama konsola, która posiada aliasy. W ten sposób aliasy są przypisane do konsoli i przejściowe.

Uchwyty TCC / LE JP Software same są aliasami. aliasPoleceń pozwala na przeglądanie i manipulowanie aliasów, które są albo „lokalny” lub „globalne”. Aliasy są nadal przejściowe, ale są prywatne dla jednego procesu interpretera poleceń lub współużytkowane przez wszystkie procesy interpretera poleceń (na wszystkich konsolach).

Powłoki, takie jak powłoka Korn w zestawie narzędzi SFUA - których narzędzia działają w podsystemie aplikacji opartych na systemie UNIX, który jest dostępny w pudełku z wersją Windows 7 Ultimate i Windows Server 2008 R2 (w systemie Windows XP można pobrać i zainstalować Usługi dla systemu UNIX w wersji 3.5 .) - oraz powłoka Bourne Again z cygwin podobnie obsługują same aliasy. Aliasy są przejściowe i na proces interpretera poleceń.

Automatyczne ładowanie domyślnego początkowego zestawu aliasów zależy również od interpretera poleceń.

We wszystkich przypadkach komendy ustawiają aliasy w jakimś skrypcie.

grawitypodał już jeden z dwóch kluczy rejestru, który powoduje, że Microsoft CMD uruchamia polecenie podczas uruchamiania . Niestety jest to proces interpretera poleceń, nawet jeśli same aliasy są przechowywane na konsoli . Uruchom pomocniczy interpreter poleceń z początkowego, a wszelkie ręczne zmiany domyślnych aliasów zostaną zresetowane. Alternatywą, która przynajmniej wykonuje inicjalizację tylko raz na konsolę, jest dodanie /Kopcji i nazwy skryptu poleceń, który wywołuje doskeyogon polecenia w skrócie, który uruchamia interpreter poleceń.

TCC / LE JP Software automatycznie uruchamia TCSTARTskrypt po uruchomieniu. Ponownie jest to proces interpretera poleceń. Jednak „lokalne” aliasy TCC są również dla procesu interpretacji poleceń, więc jest to właściwe miejsce do inicjowania aliasów, jeśli używa się lokalnych aliasów. Dla globalnych aliasów, wystarczy utworzyć skrót w swoim Startupfolderze, który ładuje aliasy z pliku (z alias /r), a następnie uruchamia się shraliaspolecenie tak, że utrzymują się one po tym skrót zakończy działanie.

Dla pocisków Bourne Again i Korn, po prostu rób tak, jak byś chciał z tymi pociskami na dowolnej innej platformie. Użyj aliaspolecenia w skryptach $HOME/.profilei $HOME/.bashrcskryptach dla powłoki Bourne Again; i użyj aliaspolecenia z $HOME/.profile, ENV i $HOME/.kshrcskryptów dla powłoki Korn.

JdeBP
źródło
2

Odpowiedź grawitacji działała dla mnie świetnie.

Stworzyłem skrypt shell-aliases.cmd w folderze Moje dokumenty (gdzieś go znajdę później).

Następnie utworzono rozwijalną wartość ciągu „AutoRun” w kluczu rejestru:

'HKEY_CURRENT_USER Oprogramowanie Microsoft Procesor poleceń'

Ustaw wartość na pełną ścieżkę do pliku aliasów (Mine był w 'C: Użytkownicy Lee Documents shell-aliases.cmd').

Po ponownym załadowaniu wiersza polecenia moje aliasy klawiszy działały. Dodatkowo mój plik aliasów jest łatwo dostępny i gotowy do edycji, ponieważ myślę o dodaniu kolejnych.

lee8oi
źródło
0

Istnieje kilka lokalizacji, które mogą to zrobić, ale menu start> folder startowy jest prawdopodobnie najłatwiejszy.

Uruchom „msconfig” i zobacz, jakie programy się uruchamiają i dlaczego. Możesz po prostu dodać swój program do jednej z tych list (na przykład w rejestrze).

Konerak
źródło
0

Problem polega na tym, że jeśli zrobisz to podczas uruchamiania, te podstawienia byłyby dostępne tylko w otwartym oknie CMD. Jeśli się zamknie, wszystkie te zmiany zostaną utracone i muszą zostać wykonane ponownie dla każdego otwartego wiersza polecenia.

Tak więc, kilka alternatywnych sposobów (możesz je połączyć):

I. Utwórz partię i skrót:

  1. Utwórz partię z tymi makrami i zapisz ją w jakimś znanym miejscu (np. C: apps mycmd.bat).
  2. Utwórz do niego skrót na pulpicie (lub gdzie chcesz) wstawiając „cmd / k” przed ścieżką (np. „Cmd /kc:\t
  3. Wszystkie polecenia będą uruchamiane za każdym razem, gdy otworzysz ten skrót.

II. Utwórz partię i wpis w zmiennej środowiskowej PATH:

  1. Utwórz partię z tymi makrami i zapisz ją w jakimś znanym miejscu (np. C: apps mycmd.bat).
  2. Wybierz Panel sterowania> System> Zaawansowane konfiguracje> Zaawansowane> Zmienne środowiskowe.
  3. W pozycjach użytkownika lub systemu wyszukaj zmienną o nazwie PATH. Kliknij go dwukrotnie i na końcu wstaw „;” i ścieżka do twojego BAT (np. „c: apps” => „previous_string; c: apps”), a następnie Ok i Ok.
  4. Więc kiedy używasz cmd (lub w pliku BAT), po prostu wpisz nazwę BAT w utworzonej ścieżce (np. „C: apps”), aby uruchomić swoje polecenia (np. Wpisz „myapps”, aby uruchomić te komendy podstawiania).
kokbira
źródło
1
Próbowałem „start / separate”, ale zapisuje tylko zmienną środowiskową (nie podstawienia polecenia doskey) ... Polecenie „set” jest również poprawne tylko dla otwartego monitu, ale możemy użyć „setx”, aby zapisać go w systemie lub zmienne środowiskowe użytkownika „na zawsze”. Nie wiem, czy istnieje sposób na zapisanie podstawek doskey „na zawsze” do systemu lub przy każdym uruchomieniu systemu Windows. Wolę wykorzystywać moje sposoby ...
kokbira