2015-08-29 3 views
1

Так эй я искал немного, но я только нашел коды, какЗамена всех JPG/PNG файлов в большой папке с подпапок

var files = Directory.EnumerateFiles(_folder, "*.*", SearchOption.AllDirectories) 
     .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png")); 

это не имеет смысла для меня, ничего подобного не сделано раньше, так эй, давай попробуем, просто нужно намек для начала. У меня есть одна большая папка с задницей (60gb (ее .mp3 + png/jpg)) позволяет сказать, что ее имя - это изображения в этой папке, есть много других подпапок, в которых всегда есть один .jpg или .png, и я бы хотел замените все jpgs/png на один, который я подготовил для этого действия, у кого есть идеи?

еще раз:

изображения - folderwithjpg, folderwithjpg1, folderwithjpg2, folderwithpng программа должна искать для всех папок, а затем для каждой папки просто проверить, если есть какие-либо .jpg или .png, и если таковые имеются, замените их одним точным изображением.

если кто-то задается вопросом, его для игры называется osu! - есть песня для каждой песни, и я хочу ее изменить и иметь одну и ту же карту. спасибо.

+0

_ «заменить все Jpgs/PNGs одному я приготовил для этой акции» _ - Вы хотите заменить ** каждый ** JPG и PNG файлов с любыми файл, который вы имеете в виду? – cubrr

+0

Да, есть X количество jpg/pngs, и я хочу заменить каждый из них своим файлом. –

ответ

0

Вы можете попробовать что-то вроде этого:

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); 
     } 
+0

EndsWith не работает, как есть. Если вы хотите использовать его, вам понадобится что-то вроде: s.ToLower(). EndsWith (". Jpg") –

+0

Да, вы правы, но лучше использовать .ToUpperInvariant(). EndsWith (". JPG") –

0

Вы можете получить список всех 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}; 

PS: Я не совсем уверен, целью такой операции.

+0

Вы, безусловно, на правильном пути здесь. Единственное, чего не хватает, это, возможно, «File.Replace», чтобы фактически заменить. Я бы предложил использовать 'Directory.EnumerateFiles' вместо' GetFiles', потому что GetFiles будет блокироваться, пока не выберет полный список всех файлов соответствия. EnumerateFiles позволяет начать работу с миллисекундой, вы получите первое имя файла. – cubrr

+0

Извините, мой оригинальный комментарий вышел немного враждебно - ваш ответ верен, я не хотел сказать, что это не так. – cubrr

+0

Я отредактировал его в соответствии с вашим комментарием :) Еще странный запрос заменить все эти настройки одним контентом (чистая избыточность :) –

Смежные вопросы