Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果目录中已存在文件夹,如何增加文件夹编号_C# - Fatal编程技术网

C# 如果目录中已存在文件夹,如何增加文件夹编号

C# 如果目录中已存在文件夹,如何增加文件夹编号,c#,C#,例如,如果我创建了一个文件夹名为IMG10001,但该文件夹已存在于目标目录中。下面的代码将文件夹名设置为IMG10001-1,但我想完成的是,如果目标目录中已经存在IMG10001,则将文件夹名增加为IMG10002 string destinDir = dirPath + "\\" + this.Batch.BatchName; int x = 0; if (Directory.Exists(destinDir)) { do { x++; de

例如,如果我创建了一个文件夹名为IMG10001,但该文件夹已存在于目标目录中。下面的代码将文件夹名设置为IMG10001-1,但我想完成的是,如果目标目录中已经存在IMG10001,则将文件夹名增加为IMG10002

string destinDir = dirPath + "\\" + this.Batch.BatchName;
int x = 0;
if (Directory.Exists(destinDir))
{
    do
    {
        x++;
        destinDir = dirPath + "\\" + this.Batch.BatchName + "-" + x.ToString();
    } while (Directory.Exists(destinDir));
}    
System.IO.Directory.Move(root,destinDir);

假设BatchName始终以“IMG”开头,则可以从文件中拆分该数字。为了确保获得最高的数字,请遍历所有文件并存储找到的最高数字


找到最大的数字后,将其递增1并重新生成文件名(“IMG”+newNumber)。

假设BatchName始终以“IMG”开头,则可以从文件中拆分该数字。为了确保获得最高的数字,请遍历所有文件并存储找到的最高数字


找到最大数字后,将其递增1并重新生成文件名(“IMG”+newNumber)。

您可以使用
Regex
从字符串中提取整数部分,并将其递增为

string YourString = "IMG10001";
int IntegerPart = Convert.ToInt16(Regex.Match(s, "\\d+").ToString());
IntegerPart++;

您可以使用
Regex
从字符串中提取整数部分,并将其作为

string YourString = "IMG10001";
int IntegerPart = Convert.ToInt16(Regex.Match(s, "\\d+").ToString());
IntegerPart++;
我只是在输入框中编写这些代码,我还没有尝试。但我认为它应该起作用


我只是在输入框中编写这些代码,我还没有尝试。但我认为它应该起作用

您需要先阅读要在其中估价的内容,这样您就可以从中增加它。。。并从文件名中删除破折号。您应该替换文件名,而不是向其附加值。你想要像IMG1002这样的东西。。。我没有看到破折号。啊,那么你的建议是什么,然后我问我如何更改代码,以便得到我喜欢的结果,正如我指出的,如果已经存在重复的文件号,代码将不会重命名文件夹,代码将给出IMG10001-1,请注意,此代码用于实时生产设置。此destinDir=dirPath+“\\”+this.Batch.BatchName+“-”+x.ToString();将给您一个IMG10001-1的结果。您需要先读取要计算的值,以便从那里开始递增。。。并从文件名中删除破折号。您应该替换文件名,而不是向其附加值。你想要像IMG1002这样的东西。。。我没有看到破折号。啊,那么你的建议是什么,然后我问我如何更改代码,以便得到我喜欢的结果,正如我指出的,如果已经存在重复的文件号,代码将不会重命名文件夹,代码将给出IMG10001-1,请注意,此代码用于实时生产设置。此destinDir=dirPath+“\\”+this.Batch.BatchName+“-”+x.ToString();将为您提供IMG10001-1的结果。batchname将是从IMG10001开始的索引…IMG1nnn batchname将是从IMG10001开始的索引…IMG1nn需要将其与
IntegerPart.ToString().padlift(4,'0')
或类似项一起使用,以获得正确格式的字符串。需要将其与
IntegerPart.ToString()一起使用.PadLeft(4,'0')
或类似命令,以获取正确格式的字符串。