我制作了一个可执行文件,其中我想将任意数量的文件拖放到上面。我希望它删除所有这些文件的前15个字符。它正在根据需要重新命名大量文件,但之后会引发错误。将多个文件拖放到可执行文件C上#
“Unhandeled异常:System.IndexOutOfRangeException:指数阵列的边界之外在RemoveTimeStampMultipleFiles.Program.Main(字串[] args)”
当我拖动2个文件是它然后寻找三分之一?
也有没有办法允许无限文件,而不是最大99?
using System;
using System.IO;
namespace RenameVersion2
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
return; // return if no file was dragged onto exe
for (int i = 0; i < 99; i++)
{
if (args[i].Length == 0)
System.Environment.Exit(0);
string MyString = Path.GetFileNameWithoutExtension(args[i]);
String NewFileName = MyString.Remove(0, 15);
string path = Path.GetDirectoryName(args[i])
+ Path.DirectorySeparatorChar
+ MyString
+ Path.GetExtension(args[i]);
string newPath = Path.GetDirectoryName(args[i])
+ Path.DirectorySeparatorChar
+ NewFileName
+ Path.GetExtension(args[i]);
File.Move(path, newPath);
}
System.Environment.Exit(0);
}
}
}
只需使用一个'foreach'循环,因为你想获得的所有集合中的项目。程序结束时也没有任何理由拥有'Environment.Exit',程序已经结束。 – Servy
对于作为args传递的所有文件(假设你只有文件名作为参数),只需使用'foreach(arg in args)',并用'arg'替换'args [i]'调用。至于例外情况,你是否尝试过调试?当您的文件名少于15个字符时会发生什么? – Kolichikov
@Kolichikov对'foreach'有正确的解决方案,但至少应该使用'for(i = 0; i