PDA

View Full Version : برنامه ای برای تغییر نام فولدرها



alaydyn_gholechragh
شنبه 18 دی 1389, 11:42 صبح
سلام
یک برنامه می خواهم که این کار را انجام بده
به طور مثال آدرس یک پوشه را به آن می دهم بعد بهم بگه در آن پوشه چند تا فولدر وجود دارد و بعد با زدن کلید مثلا تغییر نام کلیه فولدرهای داخل آن پوشه را شماره گزاری کند یعنی اسم فولد بعلاوه شماره فولدر تا زمانیکه من از طریق کامپیوتر به مسیر پوشه میروم تمامی فولدرهای درون آن شماره گذاری شده باشه
مثلا اگر 3 فولدر داخل پوشه علی هست به نامهای رضا و حسن و حسین بهم بگه 3 تا فولدر وجود دارد و بعد که من میزنم تغییر نام فولدرهای داخل پوشه علی به صورت رضا1وحسن2وحسین3 تغییر نام پیدا کنند


اگر ممکنه کمکم کنید برنامه ای ساده ای است اما من با فولدر و فایلها کار نکرده ام

با تشکر فراوان

rezatati
شنبه 18 دی 1389, 12:59 عصر
این هم کد تعداد دایرکتوری ها و تغییرنامشون یه ذره کار داره اگه خودت نتونستی بعدا مینویسم با همین کدی که نوشتم ور برو میتونی خودت انجام بدی

System.IO.DirectoryInfo dir = new DirectoryInfo("c:\\windows");
int DirCount= dir.GetDirectories().Length;

hamid_200611
شنبه 18 دی 1389, 13:36 عصر
لیست فایل ها:

string[] filePaths = Directory.GetFiles(@"c:\MyDir\");
لیست پوشه ها:

string[] filePaths = Directory.GetFiles(@"c:\MyDir\");

برای تغییر نام هم از متد Rename از کلاس file و Directory استفاده کنید

archDevil
شنبه 18 دی 1389, 14:22 عصر
با سلام
دوست عزیز یه متغیر از نوع Directory تعریف کن و مسیر پوشه"علی" رو بهش بده حالا با یک foreach می تونی پوش های مورد نظر رو استخراج کنی که به همین طریق می تونی نامشون رو نمایش بدی یا حتی تغییر نام و یا هر بلایی دوست داری سرشون بیاری:قلب:
موفق باشی

alaydyn_gholechragh
شنبه 18 دی 1389, 15:18 عصر
این هم کد تعداد دایرکتوری ها و تغییرنامشون یه ذره کار داره اگه خودت نتونستی بعدا مینویسم با همین کدی که نوشتم ور برو میتونی خودت انجام بدی

System.IO.DirectoryInfo dir = new DirectoryInfo("c:\\windows");
int DirCount= dir.GetDirectories().Length;

ممنون می شوم اگر راهنمایی بیشتری بکنی یا یک کد کاملی برایم ایجاد کنی با تشکر

ali.rezaei7
شنبه 18 دی 1389, 17:20 عصر
درود. تا اونجایی که من می دونم ابزار های دات نت و توابع ویندوز، توانایی تغییر نام پوشه رو ندارن. ولی دو تا راه هست:


ساخت پوشه جدید با نام مورد نظر و انتقال محتویات پوشه در پوشه ایجاد شده، توسط تابع Directory.Move.
استفاده از کامپوننت Microsoft Scripting Runtime.

من از روش دوم این کارو انجام دادم:

در ابتدا از منوی Project گزینه Add Reference رو انتخاب کن، بعدش از قسمت COM گزینه Microsoft Scripting Runtime رو وارد کن. بعدشم از تابع زیر استفاده کن.


private void ChangeDirectoryName(string Path)
{
string[] dir=Directory.GetDirectories(Path);
Scripting.FileSystemObject fso=new Scripting.FileSystemObject();
MessageBox.Show(dir.Length.ToString());
int l=0;
foreach (string d in dir)
fso.GetFolder(d).Name += " " + (++l).ToString();
}

دانلود کامپوننت:
http://up.iranblog.com/images/kwfpwweuotoiha01vitj.rar

meysamrt
شنبه 18 دی 1389, 18:18 عصر
کد مربوط به جستجوی پوشه ها:

label1.Text = "";
string path = "d:\\Ali";
DirectoryInfo root = new DirectoryInfo(path);
int i = 0;
foreach (DirectoryInfo dir in root.GetDirectories())
{
label1.Text += dir.Name + Environment.NewLine;
i++;
}

label1.Text += "Total Directories: " + i;

کد مربوط به تغییر نام:

string path = "d:\\Ali";
DirectoryInfo root = new DirectoryInfo(path);
int i = 1;
foreach (DirectoryInfo dir in root.GetDirectories())
{
dir.MoveTo(Path.Combine(root.FullName, dir.Name + i));
i++;
}

ali.rezaei7
یک شنبه 19 دی 1389, 10:46 صبح
این راهی که دوستمون meysamrt پیشنهاد دادن، همون اولین راهی هست که من گفتم، بله شدنیه ولی اگه ظرفیت محتویات پوشه در حد چند گیگابایت باشه، در این صورت بخاطر یه تغییر نام باید کلی هزینه زمانی و محاسباتی صرف کنیم. در کل راه منطقی نیست.