2008-08-22 29 views
12

Ví dụ: Bạn có phím tắt s đến SomeProgram trong thư mục hiện tại.Thực hiện các phím tắt như chương trình

Trong cmd.exe, bạn có thể nhập s và chương trình sẽ khởi chạy chương trình.

Trong PowerShell, gõ s cho:

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

Nếu bạn gõ s.lnk hoặc SomeProgram, nó chạy chương trình tốt.

Làm cách nào tôi có thể định cấu hình PowerShell để thực thi lối tắt giống như chương trình?

Trả lời

7

Trên hệ thống Vista của tôi, gõ S sẽ không khởi chạy tệp lnk trừ khi tôi có biến môi trường PATHEXT được đặt bằng .lnk trong danh sách. Khi tôi làm. S sẽ làm việc trong cmd.exe và tôi phải làm. \ S trong PowerShell.

+1

cmd tự động thêm thư mục hiện tại "." vào biến môi trường PATH của bạn. PowerShell coi đây là một nguy cơ bảo mật và buộc bạn phải nhập đường dẫn. \ Một cách rõ ràng. Như trong linux, bạn có thể thêm "." vào biến môi trường PATH của bạn để khôi phục hành vi "nguy hiểm" ... – Jaykul

+0

Tôi nghĩ bạn cũng phải nhập tên tệp đầy đủ, s.lnk, như slipsec đã nói – Jaykul

+0

Jaykul/slipsec, câu trả lời tôi đưa ra là giải thích rằng bạn có thể thêm .lnk đến biến môi trường PATHEXT và sau đó bạn có thể khởi chạy một lối tắt từ dòng lệnh mà không cần thêm .lnk. – bruceatk

2

Tôi không tin rằng bạn có thể. Bạn có thể là tốt hơn off aliasing thường được sử dụng lệnh trong một kịch bản mà bạn gọi từ kịch bản hồ sơ của bạn.

Ví dụ -

Set-Bí danh np c: \ windows \ notepad.exe

Sau đó, bạn có ngắn, cái tên thật dễ typeable của bạn có sẵn từ dòng lệnh.

0

Bạn luôn có thể sử dụng hoàn thành tab để nhập "s [TAB]" và nhấn ENTER và thao tác đó sẽ thực thi.

2

Đối với một, lối tắt không phải là "s" nó là "s.lnk". Ví dụ. bạn không thể mở một tập tin văn bản (nói với notepad) bằng cách gõ "t" khi tên của nó là "t.txt" :) Technet says

Các PATHEXT biến môi trường xác định danh sách các phần mở rộng tập tin kiểm tra bởi Windows NT khi tìm kiếm cho tệp thi hành. Giá trị mặc định của PATHEXT là .COM; .EXE; .BAT; .CMD

Bạn có thể chấm nguồn như mô tả của những người khác ở đây, hoặc bạn cũng có thể sử dụng ký tự gọi "&". Điều này có nghĩa rằng PS xử lý chuỗi của bạn như một cái gì đó để thực thi hơn là chỉ văn bản. Điều này có thể quan trọng hơn trong một kịch bản mặc dù.

Tôi muốn thêm rằng bạn nên chuyển bất kỳ tham số nào bên ngoài dấu ngoặc kép (điều này một chút tôi trước) lưu ý rằng "-r" không nằm trong chuỗi được trích dẫn, chỉ có exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null 
5

Sau khi thêm ;.LNK đến hết biến môi trường PATHEXT của tôi, tôi bây giờ có thể thực hiện các phím tắt mà không cần sự trước ./ ký hiệu. (Cảm ơn bruceatk!)

Tôi cũng lấy cảm hứng từ đề xuất của Steven để tạo một tập lệnh nhỏ tự động ẩn tất cả các phím tắt trong số PATH của tôi (mặc dù tôi có kế hoạch gắn bó với giải pháp đơn giản hơn);

$env:path.Split(';') | 
    Get-ChildItem -filter *.lnk | 
    select @{ Name='Path'; Expression={ $_.FullName } }, 
     @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension($_.Name) } } | 
    where { -not (Get-Alias $_.Name -ea 0) } | 
    foreach { Set-Alias $_.Name $_.Path } 
13

Bạn cũng có thể gọi một lối tắt bằng cách sử dụng lệnh ghép ngắn "gọi". Vì vậy, ví dụ nếu bạn muốn khởi động "explorer.lnk internet" bạn có thể gõ lệnh sau:

invoke-item 'Internet Explorer.lnk' 

Hoặc bạn cũng có thể sử dụng bí danh

ii 'internet explorer.lnk' 

Một điều thú vị mà bạn có thể làm "invoke-item t.txt" và nó sẽ tự động mở bất kỳ trình xử lý mặc định nào cho các tệp * .txt, chẳng hạn như notepad.

Lưu ý Nếu bạn muốn thực thi một ứng dụng, app.exe, trong thư mục hiện tại bạn phải chỉ định đường dẫn, tương đối hoặc tuyệt đối, để thực thi. ". \ app.exe" là những gì bạn cần phải gõ để thực thi ứng dụng.

+1

Cũng thử "ii". đôi khi;) – halr9000

+0

Tôi đã thử qua phiên Remote Power Shell. Vấn đề là nó không khởi chạy giao diện người dùng. Ngay lập tức, tôi thử khởi chạy Visual Studio. Tôi có thể thấy quy trình của nó nhưng không có giao diện người dùng nào được hiển thị khi tôi kết nối với máy tính bằng RDP. Bất kỳ ý tưởng? – Royi

Các vấn đề liên quan