ファイルをいくつでもドラッグしたい実行ファイルを作成しました。これらすべてのファイルの最初の15文字を削除します。これは、期待通りに多数のファイルの名前を変更していますが、後でエラーを投げます。実行可能ファイルに複数のファイルをドロップC#
「Unhandeled例外:System.IndexOutOfRangeException:インデックスが配列の範囲外であったRemoveTimeStampMultipleFiles.Program.Mainで(文字列[]引数)」
I 2つのファイルをドラッグすると、それは第3探しています?
また、最大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);
}
}
}
対です。また、プログラム終了時に 'Environment.Exit'を持つ理由もなく、プログラムはすでに終了しています。 argsとして渡された全てのファイルに対して – Servy
( 'args ')' args [i] '呼び出しを' arg'に置き換えてください。例外として、デバッグを試しましたか?ファイル名が15文字未満の場合はどうなりますか? – Kolichikov
@Kolichikovは 'foreach'で正しい解決策を持っていますが、少なくともfor(i = 0; i