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


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.