Một ví dụ nâng cao hơn:
⍟ đối số không giới hạn.
⍟ tồn tại trên hệ thống tệp (hoặc file
hoặc directory
?) Hoặc chung string
.
⍟ chỉ định nếu là một tệp
⍟ chỉ định là một thư mục
⍟ không có phần mở rộng, sẽ hoạt động trong các tập lệnh cũ!
⍟ mã tối thiểu ☺
@echo tắt
:vòng
:: -------------------------- có đối số?
nếu ["% ~ 1"] == [""] (
echo xong.
goto end
)
:: -------------------------- tồn tại đối số?
nếu không tồn tại% ~ s1 (
tiếng vang không tồn tại
) else (
tiếng vang tồn tại
nếu tồn tại% ~ s1 \ NUL (
echo là một thư mục
) else (
echo là một tập tin
)
)
:: --------------------------
sự thay đổi
vòng lặp goto
:kết thúc
tạm ngừng
✨ những thứ khác..✨
■ trong %~1
- ~
loại bỏ bất kỳ gói "
hoặc '
.
■ in %~s1
- the s
tạo nên đường dẫn DOS 8.3 naming
, đó là một mẹo hay để tránh khoảng trắng trong tên tệp khi kiểm tra nội dung (và cách này không cần phải bọc tài nguyên bằng nhiều "
s.
■ ["%~1"]==[""]
"không thể chắc chắn" nếu đối số là tệp / thư mục hay chỉ là một chuỗi chung chung, vì vậy thay vào đó, biểu thức sử dụng dấu ngoặc và nguyên bản chưa được sửa đổi %1
(chỉ cần không có "
gói, nếu có ..)
nếu không có đối số nào về việc nếu chúng ta đã sử dụng shift
và con trỏ arg-list đã vượt qua đối số cuối cùng, biểu thức sẽ được đánh giá thành [""]==[""]
.
■ điều này càng cụ thể mà bạn có thể thực hiện mà không cần sử dụng thêm thủ thuật (nó sẽ hoạt động ngay cả trong các tập lệnh hàng loạt của windows-95 ...)
■ ví dụ thực thi
lưu nó dưới dạng identifier.cmd
nó có thể xác định các đối số không giới hạn (thông thường bạn bị giới hạn %1
- %9
), chỉ cần nhớ đặt các đối số bằng dấu phẩy ngược hoặc sử dụng cách đặt tên 8.3 hoặc kéo và thả chúng qua (nó tự động thực hiện một trong hai cách trên).
điều này cho phép bạn chạy các lệnh sau:
⓵ identifier.cmd c:\windows
và để có được
hiện hữu
là một thư mục
làm xong
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
và để có được
hiện hữu
là một tập tin
làm xong
⓷ và nhiều đối số (tất nhiên đây là toàn bộ vấn đề ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
và để có được
hiện hữu
là một thư mục
hiện hữu
là một tập tin
hiện hữu
là một tập tin
không tồn tại
làm xong.
tự nhiên nó có thể phức tạp hơn rất nhiều,
nhưng các ví dụ đẹp phải luôn đơn giản và tối thiểu. :)
Hy vọng nó sẽ giúp bất cứ ai :)
được xuất bản tại đây: CMD Ninja - Xử lý đối số không giới hạn, xác định nếu tồn tại trong hệ thống tệp, xác định nếu tệp hoặc thư mục
và đây là một ví dụ hoạt động lấy bất kỳ lượng tệp APK nào (ứng dụng Android) và cài đặt chúng trên thiết bị của bạn thông qua bảng điều khiển gỡ lỗi (ADB.exe):
Đặt bài viết trước thành trình cài đặt APK hàng loạt không sử dụng cú pháp ADB Install-Multi