Làm thế nào về một cái gì đó đơn giản như:
PS> gci . -r foo.txt
này mặc nhiên sử dụng các tham số -filter (theo vị trí) quy định cụ thể như foo.txt bộ lọc. Bạn cũng có thể chỉ định * .txt hoặc foo? .txt. Vấn đề với StartsWith là trong khi bạn xử lý so sánh phân biệt dạng chữ, vẫn có vấn đề là cả hai và/là các dấu tách đường dẫn hợp lệ trong PowerShell.
Giả sử các tập tin có thể không tồn tại và cả $ tập tin và thư mục $ là đường dẫn tuyệt đối, bạn có thể làm điều này "PowerShell" cách:
(Split-Path $file -Parent) -replace '/','\' -eq (Get-Item $directory).FullName
Nhưng điều đó là không lớn kể từ khi bạn vẫn phải kinh điển đường dẫn/-> \ nhưng ít nhất so sánh chuỗi PowerShell không phân biệt chữ hoa chữ thường. Một tùy chọn khác là sử dụng IO.Path để chuẩn hóa đường dẫn, ví dụ::
[io.path]::GetDirectoryName($file) -eq [io.path]::GetFullPath($directory)
Một vấn đề với điều này là GetFullPath cũng sẽ tạo ra một đường dẫn tương đối một đường dẫn tuyệt đối dựa trên dir hiện hành của quá trình mà nhiều lần hơn không, là không giống như dir hiện tại của PowerShell. Vì vậy, chỉ cần chắc chắn rằng thư mục $ là một đường dẫn tuyệt đối ngay cả khi bạn phải chỉ định nó như "$ pwd \ $ directory".
Nguồn
2009-06-23 00:44:48
Tôi không quan tâm liệu tệp có tồn tại hay không, nhưng liệu đường dẫn của tệp có nằm trong thư mục hay không. Ngoài ra, định dạng của bạn không rõ ràng. –
Vâng, định dạng mã ở đây không hoạt động tốt cho PS. Đây không phải là tệp PS1 đầy đủ, chỉ cần gõ vào dòng PS cmd. Câu hỏi của bạn hỏi "Làm cách nào để kiểm tra xem tệp có nằm trong thư mục đã cho hay không ..." Có vẻ như câu trả lời khác cũng đang kiểm tra tệp, như bạn đã hỏi. Tôi thấy chỉnh sửa của bạn, nhưng làm thế nào một tập tin có một đường dẫn nếu nó thậm chí không tồn tại? – Bratch
Tôi nghĩ rằng tôi nhận được nó ngay bây giờ, bạn có đường dẫn tập tin này được lưu trữ ở đâu đó, và bạn muốn xem nếu một phần đường dẫn tồn tại bên dưới một số đường dẫn được chỉ định khác? – Bratch