我製作了一個可執行文件,其中我想將任意數量的文件拖放到上面。我希望它刪除所有這些文件的前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