Я создал исполняемый файл, в который я хочу перетащить любое количество файлов. Я хочу, чтобы он удалил первые 15 символов всех этих файлов. Он переименовывает множество файлов в надежде, но после этого он выдает ошибку.Отбросить несколько файлов на исполняемый файл C#
«Unhandeled Исключение: System.IndexOutOfRangeException:. Индекс находился вне границ массива в RemoveTimeStampMultipleFiles.Program.Main (String [] арг)»
Когда я тащу 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 (var arg in args)' и замените 'args [i]' вызовы на 'arg'. Что касается исключения, вы попробовали отладку? Что происходит, когда ваше имя файла составляет менее 15 символов? – Kolichikov
@ Количиков имеет правильное решение с 'foreach', но по крайней мере вы должны использовать' for (i = 0; i