نقل قول: تغییر نام گروهی فایل
سلام و روز خوش
شما بعد از ساخت لیست از فایلهای فولدر،
یک حلقه میسازین و هر اسم رو با "-" split میکنین
و اولین المنت میشه اون شماره ای که باید محدوده اش کنترل بشه.
مابقی کار یک rename هست.
در نوشتن کدوم بخش کد مشکل دارین تا راهنمایی کنم.
نقل قول: تغییر نام گروهی فایل
نقل قول:
نوشته شده توسط
mazoolagh
سلام و روز خوش
شما بعد از ساخت لیست از فایلهای فولدر،
یک حلقه میسازین و هر اسم رو با "-" split میکنین
و اولین المنت میشه اون شماره ای که باید محدوده اش کنترل بشه.
مابقی کار یک rename هست.
در نوشتن کدوم بخش کد مشکل دارین تا راهنمایی کنم.
ممنون از راهنمایی شما قسمت اولش رو مشکل دارم به دست آوردن کل فایل های یک پوشه و خواندن اسم آن ها
آیا دستوری حلقه ای هست که خودش از ابتدا تا انتها فایلها رو بررسی کنه ؟
نقل قول: تغییر نام گروهی فایل
شما میتونین با directory.getfiles یا directory.enumeratefiles لیست فایلهای یک فولدر رو بگیرین.
اینها با هم تفاوت دارن:
getfiles یک آرایه string برمیگردونه (یکجا) برای همین اگر تعداد زیادی فایل باشه زمان میبره تا لیست پر بشه،
ولی enumeratefiles یک enumerable collection برمیگردونه برای همین بلافاصله از اولین فایل در دسترس هست و برای فولدرهایی که فایلهای زیاد دارن سریعتر هست.
برای rename کردن getfiles باید استفاده کنین، چون در enumeratefiles فایلهای rename شده هم دوباره در لیست میان
و برنامه یا دچار خطا میشه یا تو لوپ گیر میکنه.
حالا با فرض این که در پوشه مورد نظر فقط همین فایلهای تصویری هست که گفتین:
IMPORTS SYSTEM.IO
SUB batch_rename(folder_path AS STRING)
DIM files_list = directory.getfiles(folder_path)
FOR EACH filepath AS STRING IN files_list
DIM filename AS STRING = path.GetFileName(filepath)
DIM x AS STRING = filename.split("-"c)(0)
DIM new_filename AS STRING
SELECT CASE CINT(x)
CASE <= 2540
new_filename = "94-0-0-" + filename
CASE 2541 TO 12898
new_filename = "95-0-0" + filename
CASE 12899 TO ....
new_filename = "96-0-0" + filename
CASE ELSE
new_filename = "...." + filename
END SELECT
DIM new_filepath AS STRING = path.getdirectoryname(filepath) + "" + new_filename
file.move(filepath, new_filepath)
NEXT
END SUB
نقل قول: تغییر نام گروهی فایل
نقل قول:
نوشته شده توسط
mazoolagh
شما میتونین با
directory.getfiles یا
directory.enumeratefiles لیست فایلهای یک فولدر رو بگیرین.
اینها با هم تفاوت دارن:
getfiles یک آرایه string برمیگردونه (یکجا) برای همین اگر تعداد زیادی فایل باشه زمان میبره تا لیست پر بشه،
ولی enumeratefiles یک enumerable collection برمیگردونه برای همین بلافاصله از اولین فایل در دسترس هست و برای فولدرهایی که فایلهای زیاد دارن سریعتر هست.
برای rename کردن getfiles باید استفاده کنین، چون در enumeratefiles فایلهای rename شده هم دوباره در لیست میان
و برنامه یا دچار خطا میشه یا تو لوپ گیر میکنه.
حالا با فرض این که در پوشه مورد نظر فقط همین فایلهای تصویری هست که گفتین:
IMPORTS SYSTEM.IO
SUB batch_rename(folder_path AS STRING)
DIM files_list = directory.getfiles(folder_path)
FOR EACH filepath AS STRING IN files_list
DIM filename AS STRING = path.GetFileName(filepath)
DIM x AS STRING = filename.split("-"c)(0)
DIM new_filename AS STRING
SELECT CASE CINT(x)
CASE <= 2540
new_filename = "94-0-0-" + filename
CASE 2541 TO 12898
new_filename = "95-0-0" + filename
CASE 12899 TO ....
new_filename = "96-0-0" + filename
CASE ELSE
new_filename = "...." + filename
END SELECT
DIM new_filepath AS STRING = path.getdirectoryname(filepath) + "" + new_filename
file.move(filepath, new_filepath)
NEXT
END SUB
خیلی خیلی ممنونم از توضیحات شما