我在过去曾使用过setargv.obj linking for Expanding Wildcard Arguments来处理大量的C和C++应用程序,但是我找不到任何类似的.net应用程序。.net应用程序是否有通配符扩展选项?
是否有标准如何让应用程序的命令行参数自动通配符扩展?(即从args参数中的一个条目扩展* .doc到与该通配符匹配的所有条目)。
P.S.我已经用Directory.GetFiles()为我当前的小项目入侵了一些东西,但它并未涵盖带有路径的通配符(尚未),并且如果没有自定义代码,它将很好。
更新:这里是我粗糙的黑客,为了说明。它需要分割GetFiles的路径和名称参数,但这是一般的想法。将setargv.obj链接到C或C++应用程序基本上会执行所有的通配符扩展,只留下用户遍历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
}
}
}
通过使用该方法的客户你的意思是,不仅通配符文件名,但通配符文件夹名称吗?例如:C:\ Windows \ System32 \ * \ Test * .doc? – BenAlabaster 2008-12-19 16:09:38
“原始”setargv.obj只能在文件名中使用通配符,所以这就是我要找的。 – crashmstr 2008-12-19 16:46:10
根本看起来不像黑客,它看起来很直截了当。 – 2008-12-23 00:51:01