PDA

View Full Version : سوال: تغییر دسته جمعی نام فولدرهای یک شاخه



barman.ar16
پنج شنبه 02 آذر 1396, 09:06 صبح
سلام دوستان
من توی یک شاخه تعداد حدودا 1000 فولدر دارم که در واقع با شماره پرسنلی نام گذاری شدند
حالا میخوام به جای پرسنلی ، نام و نام خانوادگی رو درج کنم
خب یه فایل اکسل دارم که 5000 پرسنلی و نام و نام خانوادگی داره
چیزی که به ذهنم رسید اومدم اون رو ریختم توی دیتابیس و توی دیتاگرید ویو نمایشش دادم و بعد بوسیله روش زیر کد تغییر نام رو درون یه حلقه ریحتم تا انجام بشه


for (int i = 0; i < rgw.Rows.Count; i++)
{
System.IO.Directory.Move(@"E:\scan" + datagridview.Rows[i].Cells[0].Value , @"E:\scan" + datagridview.Rows[i].Cells[1].Value);
}
MessageBox.Show("Finish");


سلول صفر شماره پرسنلی هست و سلول 1 نام و نام خانوادگی


تا اینجای کار مشکلی نیست فقط مشکل جایی هست که اگر توی حلقه به ردیفی برسه که پرسنلی رو بخونه و توی شاخه چنین فولدری پیدا نکنه همونجا استاپ میشه و ادامه نمیده
به نظرتون چه تغییری بدم که اگر اینطوری شد کار رو ادامه بده
یعنی در واقع اگر پرسنلی رو دید و وجود داشته تغییر نام رو انجام بده و اگر هم ندید بره سراغ بعدی و همینطور تا انتها
متشکرم

mr.sirwan
پنج شنبه 02 آذر 1396, 11:15 صبح
توی حلقه با متد Exists چک کنین که ایا اون فولدر موجود هست یا خیر:
if(Directory.Exists(path))
{
// here you can use MOVE method
}

barman.ar16
پنج شنبه 02 آذر 1396, 11:42 صبح
تشکر به این شکل حل شد :


for (int i = 0; i < datagridview.Rows.Count; i++)
{
var sourceFolder = @"E:\scan" + datagridview.Rows[i].Cells[0].Value;
var destinationFoler = @"E:\scan" + datagridview.Rows[i].Cells[1].Value;
if (Directory.Exists(sourceFolder))
{
Directory.Move(sourceFolder, destinationFolder);
}
}

shahryari
پنج شنبه 02 آذر 1396, 12:41 عصر
سلام
در .Net فضای نامی Microsoft.VisualBasic.FileIO که در سیشارپ میشه add reference و یوزینگ کرد، کلاسی بانام FileSystem وجود داره که یه متد داره برای تغییر نام پوشه ، میتونید بهره ببرید اینکار سرعت کار رو میبره بالا
using Microsoft.VisualBasic.FileIO;

for (int i = 0; i < datagridview.Rows.Count; i++)
{
var sourceFolder = @"E:\scan" + datagridview.Rows[i].Cells[0].Value;
var destinationFoler = datagridview.Rows[i].Cells[1].Value;
if (Directory.Exists(sourceFolder))
{
FileSystem.RenameDirectory (sourceFolder, destinationFolder);
}
}