C# 用子文件夹替换大文件夹中的所有jpg/PNG

C# 用子文件夹替换大文件夹中的所有jpg/PNG,c#,C#,所以嘿,我搜索了一下,但我只找到了这样的代码 var files = Directory.EnumerateFiles(_folder, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png")); 这对我没有用,以前没有做过类似的事情,所以嘿,让我们试试,只是需要一个提示开始。 我有一个大屁股文件夹(60gb(its.mp3+png/jpg)),比如说它

所以嘿,我搜索了一下,但我只找到了这样的代码

var files = Directory.EnumerateFiles(_folder, "*.*", SearchOption.AllDirectories)
       .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));
这对我没有用,以前没有做过类似的事情,所以嘿,让我们试试,只是需要一个提示开始。 我有一个大屁股文件夹(60gb(its.mp3+png/jpg)),比如说它的名字是images 在这个文件夹中,还有许多其他子文件夹,其中始终包含一个.jpg或.png,我想将所有jpg/png替换为我为这个操作准备的一个,有人有想法吗

再次:

图像-folderwithjpg、folderwithjpg1、folderwithjpg2、folderwithpng 程序应该搜索所有文件夹,然后检查每个文件夹是否有.jpg或.png,如果有,用一个精确的图像替换它们

如果有人想知道,这是一款名为osu的游戏每首歌都有一个背景,我想改变它,让每个地图都有一个相同的背景。
谢谢。

您可以从根文件夹获得所有jpg和png文件的列表,如下所示:

var baseFolder = @"c:\My Source Folder\Images";

var jpg = Directory.EnumerateFiles(baseFolder, "*.jpg", SearchOption.AllDirectories );
var png = Directory.EnumerateFiles(baseFolder, "*.png", SearchOption.AllDirectories );

foreach(var file in jpg) {File.Copy("< your one image path and name", file, true};
foreach(var file in png) {File.Copy("< your one image path and name", file, true};
var files = Directory.EnumerateFiles("root folder path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));

        foreach (string file in files)
        {
            File.Copy("path to your file", file, true);
        }
var baseFolder=@“c:\mysourcefolder\Images”;
var jpg=Directory.EnumerateFiles(baseFolder,*.jpg,SearchOption.AllDirectories);
var png=Directory.EnumerateFiles(baseFolder,*.png),SearchOption.AllDirectories);
foreach(jpg中的var文件){file.Copy(“<您的一个图像路径和名称”,file,true};
foreach(png中的var文件){file.Copy(“<您的一个图像路径和名称”,file,true};

PS:我不太确定这样一个操作的目的。

您可以从根文件夹中获得所有jpg和png文件的列表,如下所示:

var baseFolder = @"c:\My Source Folder\Images";

var jpg = Directory.EnumerateFiles(baseFolder, "*.jpg", SearchOption.AllDirectories );
var png = Directory.EnumerateFiles(baseFolder, "*.png", SearchOption.AllDirectories );

foreach(var file in jpg) {File.Copy("< your one image path and name", file, true};
foreach(var file in png) {File.Copy("< your one image path and name", file, true};
var files = Directory.EnumerateFiles("root folder path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));

        foreach (string file in files)
        {
            File.Copy("path to your file", file, true);
        }
var baseFolder=@“c:\mysourcefolder\Images”;
var jpg=Directory.EnumerateFiles(baseFolder,*.jpg,SearchOption.AllDirectories);
var png=Directory.EnumerateFiles(baseFolder,*.png),SearchOption.AllDirectories);
foreach(jpg中的var文件){file.Copy(“<您的一个图像路径和名称”,file,true};
foreach(png中的var文件){file.Copy(“<您的一个图像路径和名称”,file,true};

PS:我真的不确定这样一个手术的目的。

你可以试试这样的方法:

var baseFolder = @"c:\My Source Folder\Images";

var jpg = Directory.EnumerateFiles(baseFolder, "*.jpg", SearchOption.AllDirectories );
var png = Directory.EnumerateFiles(baseFolder, "*.png", SearchOption.AllDirectories );

foreach(var file in jpg) {File.Copy("< your one image path and name", file, true};
foreach(var file in png) {File.Copy("< your one image path and name", file, true};
var files = Directory.EnumerateFiles("root folder path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));

        foreach (string file in files)
        {
            File.Copy("path to your file", file, true);
        }

您可以尝试以下方法:

var baseFolder = @"c:\My Source Folder\Images";

var jpg = Directory.EnumerateFiles(baseFolder, "*.jpg", SearchOption.AllDirectories );
var png = Directory.EnumerateFiles(baseFolder, "*.png", SearchOption.AllDirectories );

foreach(var file in jpg) {File.Copy("< your one image path and name", file, true};
foreach(var file in png) {File.Copy("< your one image path and name", file, true};
var files = Directory.EnumerateFiles("root folder path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));

        foreach (string file in files)
        {
            File.Copy("path to your file", file, true);
        }

“将所有jpg/png替换为我为此操作准备的文件”-你想用你想用的任何文件替换每个jpg和png文件吗?是的,有X个jpg/png,我想用我的文件替换每个jpg/png“将所有jpg/png替换为我为此操作准备的文件”-你想用你想用的任何文件替换每个jpg和png文件吗?是的,有X个jpg/png,我想用我的文件替换每个jpg/png文件。你在这里肯定是对的。唯一缺少的可能是一个
文件。替换
来实际替换。我建议使用
Directory.EnumerateFiles
而不是
GetFiles
,因为GetFiles将被阻止,直到它获取所有匹配文件的完整列表。EnumerateFiles允许您在获得第一个文件名的毫秒后开始工作。抱歉,我的原始评论有点不友好-您的答案是有效的,我不是说它不是。我按照你的评论:)仍然是一个奇怪的请求,用一个内容替换所有这些领域(纯冗余:)如果你想更进一步,你可以使用
Enumerable.Concat
将两个IEnumerable连接在一起,这样就不需要两个foreach循环。例如
foreach(jpg.Concat(png)中的var文件)
)OP用解释更新了他的问题-这是一个游戏。游戏有一个使用特定图像作为背景的关卡。他希望所有关卡都有一个背景图像。我想这不是在游戏本身中实现的,所以需要一个像这样的黑客方法。你在这里肯定是对的。唯一的事情是t缺少的可能是一个
文件。Replace
来实际执行替换。我建议使用
目录.EnumerateFiles
而不是
GetFiles
,因为GetFiles将一直阻止,直到它获取所有匹配文件的完整列表。EnumerateFiles允许您在获得第一个文件的毫秒内开始工作a我。对不起,我最初的评论有点敌意-你的回答是正确的,我不是故意说不是。我根据你的评论编辑了它:)仍然是一个奇怪的请求,用一个单一的内容替换所有这些领域(纯粹的冗余:)如果您想更进一步,可以使用
Enumerable.Concat
将两个IEnumerable连接在一起,这样就不需要两个foreach循环。例如
foreach(jpg.Concat(png)中的var文件)
;)OP用解释更新了他的问题-这是一个游戏。这个游戏有很多关卡,以某个图像为背景。他希望所有级别都有一个背景图像。我想这并没有在游戏中实现,所以需要一个像这样的黑客方法。如果您想使用它,那么您需要类似于:s.ToLower().EndsWith(“.jpg”)的东西是的,您是对的,但是最好使用.ToUpperInvariant().EndsWith(“.jpg”)EndsWith不会按原样工作。如果你想使用它,那么你需要像这样的东西:s.ToLower().EndsWith(“.jpg”)是的,你是对的,但是最好使用.ToUpperInvariant().EndsWith(“.jpg”)