Cách in tệp với tên của thư mục hiện tại thay vì đường dẫn đầy đủ


2

dir /b /s

Bản in này:
D:\stuff\tmp>dir /b /s D:\stuff\tmp\A.java D:\stuff\tmp\AAA D:\stuff\tmp\B.java D:\stuff\tmp\C.java D:\stuff\tmp\Why.class D:\stuff\tmp\Why.java D:\stuff\tmp\XX.class D:\stuff\tmp\XX.java D:\stuff\tmp\XX.txt D:\stuff\tmp\AAA\aaa.kkk

Tôi cần in:
D:\stuff\tmp>???? tmp\A.java tmp\AAA tmp\B.java tmp\C.java tmp\Why.class tmp\Why.java tmp\XX.class tmp\XX.java tmp\XX.txt tmp\AAA\aaa.kkk

Làm thế nào tôi có thể làm điều đó?


Vấn đề gì bạn đang cố gắng giải quyết?
DSolimano

Tôi tìm thấy cái này: Lệnh TechNet DIR . Tôi không có thời gian để xem xét nó, nhưng nó sẽ cho biết bạn có làm được hay không.
Dooley_labs

Câu trả lời:


0

Điều này làm việc cho tôi, nếu bạn đặt như sau trong một tệp CMD:

@echo off
SETLOCAL EnableDelayedExpansion
for /f "usebackq delims=" %%A in (`cmd /c dir /s /b`) DO (
  set NAME=%%A
  set SHORT=!NAME:%cd%\=!
  echo.!SHORT!
) 

Nó nhận đầu ra của dirlệnh ban đầu của bạn và sử dụng thay thế chuỗi để loại bỏ thư mục hiện tại. Xem set /?để biết thêm thông tin về điều này. Nếu bạn muốn chuyển thư mục làm đối số thay vì sử dụng thư mục hiện tại, hãy thử sửa đổi các biến này:

@echo off
SETLOCAL EnableDelayedExpansion
for /f "usebackq delims=" %%A in (`cmd /c dir /s /b %1`) DO (
  set NAME=%%A
  set SHORT=!NAME:%~1\=!
  echo.!SHORT!
) 

Cảnh giác với tên tệp và thư mục có dấu chấm than trong tên tệp, vì chúng có xu hướng bị loại bỏ bằng phương pháp này. Nếu bạn cần một cái gì đó mạnh mẽ hơn có thể xử lý việc này, hãy xem xét việc cài đặt GNU sed hoặc grep . Bạn cũng có thể điều tra bằng cách sử dụng lệnh tìm GNU nếu bạn không bận tâm tên tệp quay lại kiểu UNIX bằng dấu gạch chéo thay vì dấu gạch chéo ngược và dẫn đầu ./trước mỗi mục.

Ngoài ra còn có một câu trả lời khác có thể cung cấp cho bạn ý tưởng về việc xử lý dấu chấm than trong quá trình xử lý CMD: https://stackoverflow.com/questions/32873578/how-to-read-a-opes-with-from-a-file-in- windows-batch-script / 32874195 # 32874195

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.