Trong tệp batch của tôi trên Windows XP, tôi muốn sử dụng %*
để mở rộng đến tất cả các tham số ngoại trừ đầu tiên. tập tin
thử nghiệm (foo.bat):Cách làm cho SHIFT hoạt động với% * trong các tệp hàng loạt
@echo off
echo %*
shift
echo %*
Gọi:
C:\> foo a b c d e f
thực tế kết quả:
a b c d e f
a b c d e f
mong muốn kết quả:
a b c d e f
b c d e f
Làm cách nào để đạt được kết quả mong muốn? Cảm ơn!!
Tôi không thấy lợi ích của các tập tin tạm thời - 'đặt t =% *' sẽ chỉ làm việc tốt. Câu trả lời này sẽ thất bại nếu% 1 chứa '=' hoặc bắt đầu bằng '*' hoặc '~'. Cũng sẽ có vấn đề nếu arg được phân tách bằng ',' hoặc ';' thay vì dấu cách. Tốt hơn là chỉ xóa% 1 và để (các) dấu phân tách tại chỗ. – dbenham
Vấn đề kẻ giết người - câu trả lời này sẽ trả lời sai nếu arg là 'A A B'. Có thể được cải thiện với 'set t =! T: *% 1 =!' – dbenham
Sử dụng 'set" t =! T: *% 1 =! 'Sửa đổi, câu trả lời này sẽ vẫn thất bại nếu% 1 chứa' = ', nhưng bắt đầu với '*' hoặc '~' là ok – dbenham