Tôi đã sử dụng setargv.obj linking for Expanding Wildcard Arguments trong quá khứ cho một số ứng dụng C và C++, nhưng tôi không thể tìm thấy bất kỳ đề cập tương tự nào cho các ứng dụng .net.Có tùy chọn mở rộng ký tự đại diện cho ứng dụng .net không?
Có cách nào tiêu chuẩn cách để tự động mở rộng các thông số dòng lệnh của ứng dụng? (nghĩa là mở rộng * .doc từ một mục nhập trong tham số args thành tất cả khớp với ký tự đại diện đó).
P.S. Tôi đã hack một cái gì đó cùng với Directory.GetFiles() cho dự án nhỏ hiện tại của tôi, nhưng nó không bao gồm các ký tự đại diện với các đường dẫn (chưa), và nó sẽ là tốt đẹp để làm điều đó mà không có mã tùy chỉnh.
Cập nhật: đây là lỗi thô của tôi, để minh hoạ. Nó cần phải phân tách các tham số cho đường dẫn và tên cho GetFiles, nhưng đây là ý tưởng chung. Liên kết setargv.obj thành một ứng dụng C hoặc C++ về cơ bản sẽ làm tất cả việc mở rộng ký tự đại diện, để người dùng chỉ lặp qua mảng argv.
static void Main(string[] args)
{
foreach (String argString in args)
{
// Split into path and wildcard
int lastBackslashPos = argString.LastIndexOf('\\') + 1;
path = argString.Substring(0, lastBackslashPos);
filenameOnly = argString.Substring(lastBackslashPos,
argString.Length - lastBackslashPos);
String[] fileList = System.IO.Directory.GetFiles(path, filenameOnly);
foreach (String fileName in fileList)
{
//do things for each file
}
}
}
Bằng cách đó bạn có nghĩa là không chỉ tên tập tin ký tự đại diện nhưng tên thư mục wildcard quá? Ví dụ: C: \ Windows \ System32 \ * \ Test * .doc? – BenAlabaster
Tập tin "ban đầu" setargv.obj sẽ chỉ hoạt động với các ký tự đại diện trong tên tệp, vì vậy đó là những gì tôi đang tìm kiếm. – crashmstr
không giống như hack chút nào, có vẻ khá thẳng về phía trước. –