Tự động thực thi các lệnh khi dấu nhắc lệnh được mở


21

Tôi đang tìm cách tự động thực hiện một số lệnh console khi dấu nhắc lệnh được mở trong Windows, đặc biệt là đặt một số bí danh lệnh.

Ví dụ, khi một dấu nhắc lệnh được mở, tôi muốn một lệnh như sau sẽ tự động chạy để tôi có thể sử dụng lsthay vì dir.

doskey ls=dir

Điều này có thể giải quyết như thế nào?



3
Windows XP không có DOS.
dùng1686

@KContreau, can thiệp. Vì vậy, đó sẽ là lý do để các lô của tôi không lưu các phần phụ của doskey sau lệnh "bắt đầu / tách biệt", mà chỉ với "cmd / k" hoặc "cmd / c" ...
kokbira

chúng ta có phải thay đổi tiêu đề câu hỏi hay không sau phiên bản "Làm rõ"?
kokbira

1
@KCotreau: Về mặt kỹ thuật, đây là một phần của hệ thống con Bảng điều khiển Win32, không dành riêng cho cmd.exe.
dùng1686

Câu trả lời:


9

Nếu bạn muốn nó tải khi khởi động, thay vì khi bạn đăng nhập, nếu bạn có XP Pro (nhà XP không bao gồm gpedit.msc), hãy làm điều này:

Bắt đầu> Chạy> gpedit.msc

và nhấn enter. Sau đó chạy gpupdate / force từ một dòng lệnh.

Đi đến

Cấu hình máy tính> Cài đặt Windows> Tập lệnh> Khởi động

và thêm vị trí vào tập lệnh.

Bạn cũng có thể làm điều này cho đăng nhập người dùng bên dưới

Cấu hình người dùng> Cài đặt Windows> Tập lệnh> Khởi động

Nếu bạn có XP Home, bạn có thể sao chép tập lệnh sang:

C: \ Windows \ System32 \ GroupPolicy \ Machine \ Sc scripts \ Startup

để tải chúng khi khởi động, hoặc:

C: \ Windows \ System32 \ GroupPolicy \ User \ Sc scripts \ Logon

để tải chúng cho người dùng đăng nhập. Thư mục GroupPolicy bị ẩn.


1
Tôi thích phương pháp này để đặt nó vào thư mục khởi động. Làm cho nó dễ thấm hơn.
Joe Taylor

1
@Joe Taylor Cảm ơn. Thành thật mà nói, tôi chỉ sử dụng thư mục Khởi động cho những thứ như khởi động Outlook. Đây là một cách tiêu chuẩn hơn để làm điều đó từ quan điểm quản trị hệ thống.
KCotreau

@KContreau, giải pháp của bạn rất hữu ích, nhưng không phải cho trường hợp đó. Tôi đã thử nghiệm nhưng nó không hoạt động với lệnh thay thế doskey ...
kokbira

@kokbira Câu hỏi ban đầu chỉ đơn giản là "Làm thế nào để chạy tập lệnh khi khởi động trong XP?", mà tôi nghĩ rằng tôi đã trả lời chính xác. Anh ta chỉnh sửa và thêm phần "ví dụ, và doskey ls = dir" sau.
KCotreau

1
@KContreau, bạn nói đúng, vấn đề là tiêu đề của câu hỏi này không đúng. Trong "Làm rõ", anh ấy nói rằng anh ấy muốn "chạy một số lệnh DOS khi tôi khởi động một dấu nhắc DOS, chủ yếu là đặt một số bí danh ". Để thực hiện một số lệnh khi Windows khởi động, giải pháp của bạn vẫn ổn, nhưng để chạy bí danh thì không.
kokbira

47

Các bí danh lệnh dành riêng cho cửa sổ giao diện điều khiển mà bạn định cấu hình chúng, do đó tập lệnh khởi động sẽ không hoạt động. Bạn có thể làm theo cách này:

  1. Tạo một tệp bó ( .cmd) bằng các lệnh doskey của bạn , đặt nó ở đâu đó trong Dữ liệu ứng dụng.

  2. Cấu hình nó sẽ được bắt đầu tự động bất cứ khi nào bạn mở cmd . Cài đặt trong Registry:

    • Chìa khóa: HKCU\SOFTWARE\Microsoft\Command Processor
    • giá trị: AutoRun
    • loại: REG_EXPAND_SZ
    • dữ liệu: "%AppData%\aliases.cmd"

1
Đây là một giải pháp tuyệt vời cho HĐH ảo Win2K nơi tôi muốn dấu nhắc lệnh luôn tải các đường dẫn trình biên dịch của mình. Khác biệt duy nhất là việc sử dụng REG_SZ thay vì REG_EXPAND_SZ
James

Đây là một giải pháp tốt đẹp. Tình cờ, có cách nào để triệt tiêu đầu ra ban đầu không?
nburr

1
@Nickolas: Chỉ cần chuyển hướng các lệnh đến NUL như mọi khi?
dùng1686

Điều này hoạt động tuyệt vời TUY NHIÊN nó có thể can thiệp vào trình biên dịch tài nguyên Windows (RC.exe) gây ra các lỗi như "Hệ thống không thể tìm thấy đường dẫn được chỉ định." Xem dự án Visual Studio Shell biệt lập không biên dịch .
Người dùng5910

Tôi đã sửa lỗi này bằng cách đặt kiểm tra sự tồn tại của tệp trước:if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910

4

Thông dịch lệnh khác nhau xử lý các bí danh lệnh theo những cách khác nhau.

CMD của Microsoft dựa vào hệ thống con giao diện điều khiển Win32 để cung cấp cơ chế bí danh lệnh của nó. Các doskeylệnh thực sự tương tác với quá trình giao diện điều khiển, và nó là giao diện điều khiển bản thân mà giữ bí danh. Do đó, bí danh là trên mỗi bàn điều khiển và thoáng qua.

TCC / LE của JP Software tự xử lý các bí danh. Các aliaslệnh cho phép một để xem và thao tác các bí danh, mà là một trong hai "địa phương" hay "toàn cầu". Các bí danh vẫn là nhất thời, nhưng là riêng tư đối với một quá trình trình thông dịch lệnh hoặc được chia sẻ giữa tất cả các quy trình trình thông dịch lệnh (trên tất cả các bảng điều khiển).

Các shell như shell Korn trong bộ công cụ tiện ích SFUA - có các công cụ chạy trong Hệ thống con cho các Ứng dụng dựa trên UNIX có ngay trong hộp với phiên bản Windows 7 Ultimate và Windows Server 2008 R2 (Đối với Windows XP, người ta có thể tải xuống và cài đặt Các dịch vụ cho UNIX phiên bản 3.5 .) - và vỏ Bourne Again từ cygwin tương tự xử lý các bí danh. Các bí danh là nhất thời và mỗi quá trình thông dịch lệnh.

Tự động tải một bộ bí danh ban đầu mặc định cũng khác nhau tùy theo trình thông dịch lệnh.

Trong mọi trường hợp, một lệnh sẽ đặt các bí danh trong một tập lệnh sắp xếp nào đó.

grawityđã đưa ra một trong hai khóa đăng ký khiến cho CMD của Microsoft chạy lệnh khi nó khởi động . Thật không may, đây là quá trình thông dịch lệnh, mặc dù chính các bí danh được lưu trữ trên mỗi bàn điều khiển . Bắt đầu một trình thông dịch lệnh thứ cấp từ phiên bản đầu tiên và mọi thay đổi thủ công đối với các bí danh mặc định sẽ được đặt lại. Một cách khác, ít nhất chỉ thực hiện khởi tạo một lần trên mỗi bàn điều khiển, là thêm /Ktùy chọn và tên của tập lệnh lệnh gọi doskeyđến đuôi lệnh trong phím tắt khởi động trình thông dịch lệnh.

TCC / LE của JP Software tự động chạy TCSTARTtập lệnh khi khởi động. Một lần nữa, đây là quá trình thông dịch lệnh. Tuy nhiên, các bí danh "cục bộ" của TCC cũng theo quy trình phiên dịch lệnh, vì vậy đây là nơi thích hợp để khởi tạo các bí danh nếu một người sử dụng các bí danh cục bộ. Đối với bí danh toàn cầu, chỉ cần tạo một shortcut trong của bạn Startupthư mục đó tải bí danh từ một tập tin (với alias /r) và sau đó chạy các shraliaslệnh để họ tồn tại sau khi tắt mà đã chạy xong.

Đối với các vỏ Bourne Again và Korn, chỉ cần làm như vậy với các shell này trên bất kỳ nền tảng nào khác. Sử dụng aliaslệnh trong $HOME/.profile$HOME/.bashrcscript cho shell Bourne Again; và sử dụng aliaslệnh trong $HOME/.profile, ENV và $HOME/.kshrctập lệnh cho trình bao Korn.


2

Câu trả lời của Gravity làm việc rất tốt cho tôi.

Tôi đã tạo một tập lệnh shell-aliases.cmd trong thư mục Tài liệu của mình (Một nơi nào đó tôi có thể tìm thấy nó sau này).

Sau đó, tạo Giá trị chuỗi có thể mở rộng 'AutoRun' trong khóa đăng ký:

'HKEY_CURRENT_USER \ Software \ Microsoft \ Bộ xử lý lệnh'

Đặt giá trị cho đường dẫn đầy đủ đến tệp bí danh (Của tôi nằm trong 'C: \ Users \ Lee \ Documents \ shell-aliases.cmd').

Khi tôi tải lại dấu nhắc lệnh, bí danh doskey của tôi hoạt động. Cộng với tập tin bí danh của tôi có thể dễ dàng truy cập và sẵn sàng chỉnh sửa khi tôi nghĩ thêm để thêm.


0

Có một số vị trí sẽ làm, nhưng menu bắt đầu> thư mục khởi động có lẽ là dễ nhất.

Chạy 'msconfig' và xem chương trình nào khởi động và tại sao. Bạn chỉ có thể thêm chương trình của mình vào một trong những danh sách đó (ví dụ: trong sổ đăng ký).


0

Vấn đề ở đây là nếu bạn thực hiện nó khi khởi động, những sự thay thế này sẽ chỉ có sẵn trong lời nhắc của CMD được mở. Nếu nó đóng, tất cả các thay thế này sẽ bị mất và phải được thực hiện lại cho mỗi dấu nhắc lệnh được mở.

Vì vậy, một số cách khác (bạn có thể kết hợp chúng):

I. Tạo một lô và một phím tắt:

  1. Tạo một lô với các macro này và lưu nó vào một nơi đã biết (ví dụ: c: \ apps \ mycmd.bat).
  2. Tạo một lối tắt đến nó trong máy tính để bàn (hoặc nơi bạn muốn) đặt "cmd / k" trước đường dẫn của nó (ví dụ: "cmd /kc:\apps\mycmd.bat").
  3. Vì vậy, tất cả các lệnh của bạn sẽ được chạy mỗi khi bạn mở phím tắt đó.

II. Tạo một lô và một mục trong biến môi trường PATH:

  1. Tạo một lô với các macro này và lưu nó vào một nơi đã biết (ví dụ: c: \ apps \ mycmd.bat).
  2. Chuyển đến Bảng điều khiển> Hệ thống> Cấu hình nâng cao> Nâng cao> Biến môi trường.
  3. Trong các mục nhập Người dùng hoặc Hệ thống, tìm kiếm một biến có tên PATH. Nhấp đúp chuột vào nó và ở cuối, chèn ";" và đường dẫn đến BAT của bạn (ví dụ: "c: \ apps \" => "trước_ chuỗi; c: \ apps \"), sau đó Ok và Ok.
  4. Vì vậy, khi bạn sử dụng cmd (hoặc trong tệp BAT), chỉ cần đặt tên của BAT trong đường dẫn đã tạo (ví dụ: "c: \ apps") để chạy các lệnh của bạn (ví dụ: "myapps" để chạy các lệnh thay thế đó).

1
Tôi đã thử "bắt đầu / tách biệt" nhưng nó chỉ lưu biến môi trường (không phải thay thế lệnh doskey) ... Lệnh "set" cũng chỉ hợp lệ với dấu nhắc đã mở, nhưng chúng ta có thể sử dụng "setx" để lưu nó vào hệ thống hoặc biến môi trường người dùng "mãi mãi". Tôi không biết có cách nào để lưu thay thế doskey "mãi mãi" vào hệ thống hay cho mỗi lần khởi động Windows. Tôi thích sử dụng theo cách của mình ...
kokbira
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.