我有一個統一專案,我需要重命名其中的所有檔案以包含 - 作為一種輕松識別我需要從中加載它的資產包的方式。
我需要-在識別符號的末尾插入一個,例如,testtest.png將成為test-test.png等等。
我目前有這個(現在只想從檔案名本身獲取識別符號)但是,第一個字串temp始終為空,第二個字串包含檔案名的其余部分
foreach (string file in Directory.GetFiles(Directory.GetCurrentDirectory()))
{
string name = file.Split('\\').Last();
if (name.StartsWith(args[0]))
{
string[] temp = name.Split(new[]{args[0]},StringSplitOptions.None);
foreach (string s in temp)
{
Console.WriteLine(s);
}
}
}
D:\renamething\bin\Debug>renamething.exe test
.pdb
我也嘗試過Regex,但是它產生了相同的結果,第一個是空字串,第二個是空字串。
uj5u.com熱心網友回復:
我認為這行不通,尤其是 args[0]
嘗試這個:
foreach (string file in Directory.GetFiles(Directory.GetCurrentDirectory()))
{
var fileInfo = new FileInfo(file); //Get FileInfo
if (!fileInfo.Name.StartsWith(args[0], StringComparison.OrdinalIgnoreCase)) //If File doesn't start with the specified arguments, don't process
{
continue;
}
//Consider file -> C:/TestFolder/test.png
var directory = fileInfo.DirectoryName;//Gives C:\TestFolder\
var extension = fileInfo.Extension; //gives ".png"
var fileName = Path.GetFileNameWithoutExtension(fileInfo.Name); //Gives "test"
var modifiedFileName = $"{fileName}-test{extension}"; //Gives "test-test.png
var modifiedFullPath = $"{directory}/{modifiedFileName}";// C:\TestFolder\test-test.png
fileInfo.MoveTo(modifiedFullPath);
}
uj5u.com熱心網友回復:
使用來自@Zee 的代碼(以及來自第二次查看的@Dai),這就是我最終得到的結果,未來其他人來到這里并需要它
public static void Main(string[] args){
foreach(string file in Directory.GetFiles(Directory.GetCurrentDirectory())){
FileInfo fileInfo=new FileInfo(file);
if(fileInfo.Name.StartsWith(args[0])&&fileInfo.Name.EndsWith(".png"){
string[]temp=Regex.Split(fileInfo.Name, @"(?<!^)(?=[A-Z])");
temp[0] ="-";
File.Move(fileInfo.FullName,String.Concat(temp));
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442259.html
標籤:C#
