Xác định vị trí thực thi và chạy thư mục mẹ từ thiết bị đầu cuối Windows


0

Ban đầu, tôi muốn tương tác:

  1. Xác định vị trí thư mục của một tệp thực thi (trong trường hợp giới hạn bằng cách sử dụng where )
  2. Chạy thư mục mẹ của tệp thực thi trong Explorer

Tôi đã thử cách sau trong Windows cmd:

  • Có thể đọc thiết bị xuất chuẩn từ cmd where chỉ huy

    where pip 1> myfile.txt
    
  • Tuy nhiên, điều tôi thực sự muốn là một cái gì đó như

    where pip | cd.. | explorer
    
  • where pip trả về một chuỗi với đường dẫn của tệp thực thi nếu nó trong môi trường hệ thống %PATH% biến. Tuy nhiên, tôi không thể tìm ra cách truy cập thư mục mẹ dựa trên chuỗi được trả về từ where.


Giải pháp tôi tìm thấy trong Power Shell là:

$a = Get-Item((gcm pip.exe).Path); Split-Path -Path $a -Parent | ii

Có một gọn hơn Giải pháp cho vấn đề này?

Câu trả lời:


1

Điều này …

$a = Get-Item((gcm pip.exe).Path); Split-Path -Path $a -Parent | ii

.. nghĩa đen là hai lệnh độc lập. Có chúng trên một dòng thực sự biến nó thành một lớp lót, dường như là trường hợp sử dụng của bạn.

Bạn có thể tra cứu cụ thể những gì bạn có thể sử dụng bằng cách sử dụng lệnh ghép ngắn Get-Member.

Get-Item((gcm notepad.exe).Path) | Get-Member


   TypeName: System.IO.FileInfo

Name                      MemberType     Definition                                                                                                               
----                      ----------     ----------                                                                                                               
...                                         
PSChildName               NoteProperty   string PSChildName=notepad.exe                                                                                           
PSDrive                   NoteProperty   PSDriveInfo PSDrive=C                                                                                                    
PSIsContainer             NoteProperty   bool PSIsContainer=False                                                                                                 
PSParentPath              NoteProperty   string PSParentPath=Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32                                            
PSPath                    NoteProperty   string PSPath=Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\notepad.exe                                      
..                                                                                     
Directory                 Property       System.IO.DirectoryInfo Directory {get;}                                                                                 
DirectoryName             Property       string DirectoryName {get;}                                                                                              
...                                                                                               
FullName                  Property       string FullName {get;}                                                                                                   
...

Tất nhiên là có được bạn ở đây:

(Get-Item((gcm notepad.exe).Path)).Directory
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       12/19/2018   1:33 PM                system32

(Get-Item((gcm notepad.exe).Path)).DirectoryName
C:\Windows\system32

(Get-Item((gcm notepad.exe).Path)).FullName
C:\Windows\system32\notepad.exe

Do đó ...

ii (gi((gcm notepad.exe).Path)).FullName 

Điểm lưu ý, đây là tất cả tuyệt vời và tất cả cho các công cụ tương tác, nhưng thực tế tốt nhất trong các kịch bản sản xuất, bí danh và tên ngắn nên thực sự nên tránh, vì nó làm cho kịch bản khó hiểu và duy trì.


Câu trả lời của bạn không lấy thư mục cha.
noumenal

Cha mẹ bạn là gì sau? Những gì tôi đang trình bày là cha mẹ của notepad là System32 (đó là những gì bài đăng mã của bạn cũng vậy, -Parent), nhưng có vẻ như bạn đang nói rằng bạn muốn trả lại Windows? Các thuộc tính PowerShell đã xác định được hiển thị thông qua lệnh ghép ngắn Thành viên. Nếu bạn muốn đi lên từ đường dẫn tên đầy đủ và nó là một phụ của một cái gì đó khác, bạn phải mã hóa cho điều đó.
postanote
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.