Tôi đã tạo một tệp chung (hoặc Windows Command) cho phép tôi lặp qua nội dung của một thư mục và gọi lệnh cho từng mục.
IF a%1==a ( set _DIR="%CD%") ELSE ( set _DIR="%~1")
IF a%2==a ( set _COMMAND=rem) ELSE ( set _COMMAND=%2)
IF a%3==a ( set _FILTER=*.*) ELSE ( set _FILTER=%3)
set _OPTS=%4
FOR /F "delims=" %%f IN ('dir %_DIR%\%_FILTER% %_OPTS% /b') DO (
%_COMMAND% "%%f"
)
Nhưng, tôi đang cố xác định làm thế nào để đảm bảo rằng tôi gọi %_COMMAND%
đúng tệp.
Tôi đã thử chờ trước biến thư mục ở phía trước %_COMMAND% %_DIR%\"%%f"
, nhưng điều này để lại dấu ngoặc kép trong tham số tôi truyền. Ví dụ: nếu tôi gọi tệp bó của mình exec_dir.bat
và gọi nó bằng tệp sau echo_test.bat
, tôi thấy rằng tất cả các tệp đều có dấu ngoặc kép khi echo_test.bat
chạy.
echo %~dpn1.mp4
Tập lệnh bó đó tạo ra:
> exec_dir.bat "C:\Users\User\Desktop\Test Folder" echo_test.bat *.txt
C:\Users\User\Desktop\Test Folder\"Test File.txt
C:\Users\User\Desktop\Test Folder\"Test2.txt
Tôi nghĩ rằng nó có liên quan đến \
nhân vật thoát hiểm, nhưng dường như tôi không thể làm việc xung quanh nó.
tôi không chắc liệu có bất kỳ ý tưởng nào trong số những ý tưởng này sẽ giúp ích không nhưng bạn biết% 1% ~ f1 làm cho nó đầy đủ. Ngoài ra, dir / b dường như không cung cấp đường dẫn đầy đủ, nhưng dir / b / s thì có, mặc dù tôi đoán bạn không muốn / s. một suy nghĩ khác là bạn có thể cắt các bit của biến môi trường, ví dụ echo abc, sau đó echo% a: ~ 1,2% không chắc chắn nếu điều đó hữu ích với bạn
—
barlop