Автоматичне виконання команд при відкритті командного рядка


21

Я шукаю спосіб автоматичного виконання деяких команд консолі, коли в Windows відкривається командний рядок, спеціально для встановлення деяких псевдонімів команд.

Наприклад, коли відкривається командний рядок, я хочу, щоб така команда, як наведена нижче, була автоматично запущена, щоб я могла використовувати lsзамість dir.

doskey ls=dir

Як це можна зробити?



3
У Windows XP немає DOS.
користувач1686

@KContreau, інтерессант. Так що це було б причиною, щоб мої партії не економили доскій проміжки після команди "start / отдельно", а лише з "cmd / k" або "cmd / c" ...
kokbira

чи потрібно змінювати назву питання чи ні після видання "Роз'яснення"?
kokbira

1
@KCotreau: Технічно це частина підсистеми Win32 Console, не специфічна для cmd.exe.
користувач1686

Відповіді:


9

Якщо ви хочете, щоб він завантажувався під час завантаження, а не під час входу, якщо у вас є XP Pro (додому XP не входить gpedit.msc), зробіть це:

Пуск> Виконати> gpedit.msc

і натисніть Enter. Потім запустіть gpupdate / force з командного рядка.

Йти до

Конфігурація комп'ютера> Налаштування Windows> Сценарії> Запуск

і додайте розташування до сценарію.

Ви також можете це зробити для входу в систему під

Конфігурація користувача> Налаштування Windows> Сценарії> Запуск

Якщо у вас XP Home, ви можете скопіювати сценарії в будь-який:

C: \ Windows \ System32 \ GroupPolicy \ Machine \ Сценарії \ Запуск

для завантаження їх у bootup або:

C: \ Windows \ System32 \ GroupPolicy \ Користувач \ Сценарії \ Вхід

для завантаження їх для користувача під час входу. Папка GroupPolicy прихована.


1
Я вважаю за краще цей метод помістити його в папку запуску. Робить це більш постійним.
Джо Тейлор

1
@Joe Taylor Дякую Якщо чесно, я використовую папку Startup лише для таких речей, як запуск Outlook. Це більш стандартний спосіб зробити це з точки зору системного адміністрування.
KCotreau

@KContreau, ваше рішення дуже корисне, але не для цього випадку. Я протестував, але він не функціонує для команди заміщення доськи ...
kokbira

@kokbira Первісне питання було просто "Як запустити скрипт при запуску в XP?", на який, я думаю, я відповів точно. Він відредагував і додав частину "наприклад, і doskey ls = dir" після.
KCotreau

1
@KContreau, ви маєте рацію, проблема полягає в тому, що заголовок цього питання невірний. У "Роз'ясненні" він сказав, що хоче "запустити деякі команди DOS, коли я запускаю підказку DOS, головним чином, щоб встановити деякі псевдоніми ". Щоб виконати деякі команди при запуску Windows, ваше рішення нормально, але для запуску псевдонімів це не так.
kokbira

47

Псевдоніми команд характерні для вікна консолі, на яке ви їх налаштуєте, тому сценарій запуску не працюватиме. Ви можете це зробити так:

  1. Створіть пакетний файл ( .cmd) за допомогою команд doskey , покладіть його десь у Data Application.

  2. Налаштуйте його для автоматичного запуску кожного разу, коли ви відкриєте cmd . Налаштування знаходиться в Реєстрі:

    • ключ: HKCU\SOFTWARE\Microsoft\Command Processor
    • значення: AutoRun
    • тип: REG_EXPAND_SZ
    • дані: "%AppData%\aliases.cmd"

1
Це було чудовим рішенням для віртуальної ОС Win2K, де я хотів, щоб командний рядок завжди завантажував мої шляхи компілятора. Єдиною різницею було використання REG_SZ замість REG_EXPAND_SZ
Джеймс

Це приємне рішення. Випадково чи є спосіб придушити початковий вихід?
nburr

1
@Nickolas: Просто перенаправляйте команди на NUL як завжди?
користувач1686

Це прекрасно працює, ЯКЩО це може заважати компілятору ресурсів Windows (rc.exe), викликаючи помилки типу "Система не може знайти вказаний шлях." Див. Розділ Visual Studio Shell Isolated не компілюється .
User5910

Я це виправив, встановивши спочатку перевірку на існування файлу:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910

4

Різні інтерпретатори команд обробляють псевдоніми команд по-різному.

CMD Майкрософт покладається на підсистему консолі Win32, щоб забезпечити свій механізм зчитування команд. doskeyКоманда фактично взаємодіє з консоллю процесу, і це сама консоль , яка має псевдоніми. Таким чином псевдоніми є консолі та перехідними.

TCC / LE JP Software JP керується псевдонімами. aliasКоманда дозволяє переглядати і маніпулювати псевдоніми, які є або «локальними» або «глобальними». Псевдоніми все ще є тимчасовими, але є приватними для одного процесу перекладача команд або спільними для всіх процесів інтерпретації команд (на всіх консолях).

Оболонки, такі як оболонка Korn у інструментальному інструменті SFUA - інструменти яких запущені в підсистемі для додатків на базі UNIX, що надходить прямо там у вікні з Windows 7 Ultimate edition та Windows Server 2008 R2 (для Windows XP можна завантажити та встановити Послуги для UNIX версії 3.5 .) - і оболонка Bourne Again від cygwin аналогічно обробляють псевдоніми. Псевдоніми є тимчасовими та перекладачами команди.

Автозавантаження початкового набору псевдонімів за замовчуванням також залежить від інтерпретатора команд.

У всіх випадках можна розміщувати команди для встановлення псевдонімів у певному сценарії.

grawityвже дав один із двох ключів реєстру, які викликають CMD Microsoft для запуску команди під час її запуску . На жаль, це відбувається за кожним процесом перекладача команд, навіть якщо самі псевдоніми зберігаються на консолі . Запустіть вторинний перекладач команд з початкового, і будь-які зміни в ручному зміні псевдонімів за замовчуванням будуть скинуті. Альтернативою, яка принаймні виконує ініціалізацію лише один раз на консолі, є додавання /Kопції та імені командного скрипту, який викликає doskeyхвіст команди, у ярлик, який запускає інтерпретатор команд.

TCC / LE програмного забезпечення JP Software автоматично запускає TCSTARTсценарій після його запуску. Знову ж таки, це за кожним процесом перекладача команд. Однак псевдоніми TCC "локальні" також є процесом перекладача команд, тому це правильне місце для ініціалізації псевдонімів, якщо використовується локальний псевдонім. Для глобальних псевдонімів, просто створити ярлик в Startupпапці , яка завантажує псевдоніми з файлу (з alias /r) , а потім запускають в shraliasкоманду так , що вони зберігаються після того, що ярлик завершення роботи.

Для снарядів Bourne Again і Korn просто зробіть так, як можна було б зробити з цими снарядами на будь-якій іншій платформі. Використовуйте aliasкоманду в $HOME/.profileта $HOME/.bashrcсценарії для оболонки Bourne Again; і використовувати aliasкоманду в $HOME/.profile, ENV та $HOME/.kshrcскриптах для оболонки Korn.


2

Відповідь Гравітації спрацювала для мене чудово.

Я створив скрипт shell-aliases.cmd у своїй папці «Документи» (Десь я його можу знайти пізніше).

Потім у ключі реєстру створено значення рядка розширеного значення "AutoRun":

'HKEY_CURRENT_USER \ Програмне забезпечення \ Microsoft \ Командний процесор'

Встановіть значення повного шляху до файлу псевдонімів ("Міне було в" C: \ Users \ Lee \ Documents \ shell-aliases.cmd ").

Як тільки я перезавантажив командний рядок, мої псевдоніми doskey спрацювали. Крім того, мій файл псевдонімів легко доступний і готовий до редагування, як я думаю більше додати.


0

Виконати кілька локацій, але, мабуть, найпростіше буде меню "Пуск"> "Папка запуску".

Запустіть 'msconfig' і подивіться, які програми запускаються, і чому. Ви можете просто додати свою програму до одного із цих списків (наприклад, у реєстрі).


0

Проблема тут полягає в тому, що якщо ви робите це під час запуску, ці заміни будуть доступні лише у відкритому запиті CMD. Якщо він закриється, всі ці заміни будуть втрачені і їх потрібно зробити знову для кожного відкритого командного рядка.

Отже, кілька альтернативних способів (їх можна комбінувати):

I. Створіть пакет і ярлик:

  1. Створіть пакет із цими макросами та збережіть його у відомому місці (наприклад, c: \ apps \ mycmd.bat).
  2. Створіть ярлик до нього на робочому столі (або там, де ви хочете), поставивши "cmd / k" перед його шлях (наприклад, "cmd /kc:\apps\mycmd.bat").
  3. Таким чином, всі ваші команди будуть виконуватися щоразу, коли ви відкриєте цей ярлик.

II. Створіть партію та запис у змінній середовища PATH:

  1. Створіть пакет із цими макросами та збережіть його у відомому місці (наприклад, c: \ apps \ mycmd.bat).
  2. Перейдіть на панель керування> Система> Додаткові конфігурації> Додатково> Змінні середовища.
  3. У запитах користувача або системи знайдіть змінну під назвою PATH. Двічі клацніть по ній і, наприкінці, вставіть ";" і шлях до BAT (наприклад, "c: \ apps \" => "previous_string; c: \ apps \"), потім Ок і Ок.
  4. Отже, коли ви використовуєте cmd (або у файлі BAT), просто введіть ім'я BAT у створений шлях (наприклад, "c: \ apps") для запуску ваших команд (наприклад, введіть "myapps" для запуску цих команд заміни).

1
Я спробував "запустити / розділити", але це зберігає лише змінну навколишнього середовища (а не заміну команди doskey) ... Команда "set" також діє лише для відкритого підказки, але ми можемо використовувати "setx", щоб зберегти її в системі або змінні середовища користувача "назавжди". Я не знаю, чи є спосіб зберегти doskey заміни "назавжди" в системі або для кожного запуску Windows. Я вважаю за краще використовувати свої способи ...
kokbira
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.