سوال در مورد MFilesAndFolders

ali guard

Member
سلام دوستا يك سوال دارم ج جور ميشة با بلاكينى MFilesAndFolders در بخشى splitfile شمارةى فايلهاى سبليت شودة خودم انتخاب كنم مسلن ميخواهم يك فايل دارم با 6 بخش سبليت كنم نة بيشتر اكر فايل بزرك تربود همون فايل اخر بزرك بشة 5 فايل اول ميسلى همون حجم باشد كة نويشيم

set$=
'c:\MyApp.exe|888888|No'

PluginSet
("MFilesAndFolders","set$")

PluginRun
("MFilesAndFolders","Split_File")

PluginGet
("MFilesAndFolders","get$")

If
(get$='0') Then

Message("error!","")

Else

Message("Number of parts is","get$")

End

** this command splits file in parts.
** parameter1 is the name of a file
** parameter2 is maximal size in bytes of each part of splited file
** parameter3 can be:
** Bat (Split_File function will create Bat file whcih you can use to unsplit file)
** No (this is default, you must use Unsplit_File function to unsplit file)
** If the function succeeds, the return value is number of parts of splited file.
** If the function fails, the return value is 0.

 

the_king

مدیرکل انجمن
سلام دوستا يك سوال دارم ج جور ميشة با بلاكينى MFilesAndFolders در بخشى splitfile شمارةى فايلهاى سبليت شودة خودم انتخاب كنم مسلن ميخواهم يك فايل دارم با 6 بخش سبليت كنم نة بيشتر اكر فايل بزرك تربود همون فايل اخر بزرك بشة 5 فايل اول ميسلى همون حجم باشد كة نويشيم

حجم فایل (File Size) رو بدست بیارید، بر تعداد تیکه ها تقسیم کنید (مثلا بر 6 تقسیم کنید). بعد عدد حاصل را
به سمت بالا گرد کنید و بجای پارامتر دوم قرار دهید. مثلا اگر حجم فایل 2000 است، 2000 را بر 6 تقسیم کنید
که می شود 333.33333333 و بعد آنرا به سمت بالا گرد کنید که می شود 334 و حالا بجای پارامتر دوم عدد
334 را قرار دهید :
کد:
splitsize = 334
size$ = CHAR(splitsize)
set$='c:\MyApp.exe|' + size$ + '|No'

برای بدست آوردن حجم فایل می توانید از کد زیر استفاده کنید : (مقدار filesize را به شما می دهد)
کد:
filename$ = 'C:\MyApp.exe'
cmdPath$ = '<System>\cmd.exe'
tempPath$ = '%TEMP%\size.txt'
arg$ = 'HIDE,WAIT /C DIR "' + filename$ + '" /-C /W >"' + tempPath$ + '"'
Run("cmdPath$","arg$")
tempPath$ = '<Temp>\size.txt'
LoadText("text$","FILE:tempPath$")
i = POS('1 File(s)',text$)
If (i = 0) Then
  filesize = -1
  Return()
End
i = i + 9
text$ = StrCopy(text$,i,16)
filesize = VAL(text$)

و برای گرد کردن عدد از کد زیر استفاده کنید :
کد:
splitsize = filesize / 6
If (splitsize > INT(splitsize)) Then
splitsize = INT(splitsize) + 1
Else
splitsize = INT(splitsize)
End

نمونه یک پروژه که حجم فایل را اعلام می کند ضمیمه این پست شده است.
 

پیوست ها

  • GetFileSize.zip
    1 کیلوبایت · بازدیدها: 21

loo30fer

کاربر متخصص مولتی مدیا بیلدر
جناب the king فکر میکنم
چون جناب ali guard این کار رو با پلاگین انجام میدن و این پلاگین قابلیت گرفتن سایز فایل رو داره پیشنهاد میکنم از خود پلاگین استفاده بشه چون هم حرفه ای تر میشه و هم مطمئن تر چون ممکنه کاربر Cmd ویندوزش رو بسته باشه والبته این اتفاق هم خیلی خیلی کم میفته , یه نمونه هم با استفاده از خود پلاگین گذاشتم
کد:
Path$ = 'D:\File\Splite.exe'
SetFZ$ = Path$ + '|B'
PluginSet("MFilesAndFolders","SetFZ$")
PluginRun("MFilesAndFolders","Get_File_Size")
PluginGet("MFilesAndFolders","get$")
***
VAL1 = VAL(get$)
Division = VAL1 / 6
CHAR1$ = CHAR(Division)
LEN = LEN(CHAR1$)
***
For i=1 To LEN
  GetText$ = StrCopy(CHAR1$,i,1)
  If (GetText$ = '.') Then
    LEN = i
  End
Next i
***
ReturunExt$ = StrCopy(CHAR1$,1,i)
VAL2 = VAL(ReturunExt$)
Total = VAL2 + 1
CHAR2$ = CHAR(Total)
***
SetSF$ = Path$ + '|' + CHAR2$ + '|No'
PluginSet("MFilesAndFolders","SetSF$")
PluginRun("MFilesAndFolders","Split_File")
 
آخرین ویرایش:

ali guard

Member
جناب the king فکر میکنم
چون جناب ali guard این کار رو با پلاگین انجام میدن و این پلاگین قابلیت گرفتن سایز فایل رو داره پیشنهاد میکنم از خود پلاگین استفاده بشه چون هم حرفه ای تر میشه و هم مطمئن تر چون ممکنه کاربر Cmd ویندوزش رو بسته باشه والبته این اتفاق هم خیلی خیلی کم میفته , یه نمونه هم با استفاده از خود پلاگین گذاشتم

کد:
Path$ = 'D:\File\Splite.exe'
کد:
[LEFT]SetFZ$ = Path$ + '|B' 
[LEFT]PluginSet("MFilesAndFolders","SetFZ$")
PluginRun("MFilesAndFolders","Get_File_Size")
PluginGet("MFilesAndFolders","get$")
***
VAL1 = VAL(get$)
Division = VAL1 / 6
CHAR1$ = CHAR(Division)
LEN = LEN(CHAR1$)
***
For i=1 To LEN
 GetText$ = StrCopy(CHAR1$,i,1)
 If (GetText$ = '.') Then
   LEN = i
 End
Next i
***
ReturunExt$ = StrCopy(CHAR1$,1,i)
VAL2 = VAL(ReturunExt$)
Total = VAL2 + 1
CHAR2$ = CHAR(Total)
***
SetSF$ = Path$ + '|' + CHAR2$ + '|No'
PluginSet("MFilesAndFolders","SetSF$")
PluginRun("MFilesAndFolders","Split_File")[/LEFT]
خيلى ممنون از كمكتون اقاى the_king و loo30fer
هنوزمنظورم نة فهميديد
من اين ميخواهم
مسلن يك فايل دارم حجمش 2000 دوو هزار كيلوبايت هست ميخواهم با شيش بخش تقسيم كنم
بتوانم حجمى فايلها مشخس كنم در جاى نويشتن حجم در بلاكين بنويسم 200كيلو بايت باد فايل با اين شكل سبليت بشة
فايل يك 200
فايل دوو 200
فايل سة 200
فايل جهار 200
فايل بنج 200
فايل شيش باقى باقي انها باشد يانى 1000
اكر ميشة با اين بلاكين رهنماى كنيد ممنون
[/LEFT]
 

the_king

مدیرکل انجمن
خيلى ممنون از كمكتون اقاى the_king و loo30fer
هنوزمنظورم نة فهميديد
من اين ميخواهم
مسلن يك فايل دارم حجمش 2000 دوو هزار كيلوبايت هست ميخواهم با شيش بخش تقسيم كنم
بتوانم حجمى فايلها مشخس كنم در جاى نويشتن حجم در بلاكين بنويسم 200كيلو بايت باد فايل با اين شكل سبليت بشة
فايل يك 200
فايل دوو 200
فايل سة 200
فايل جهار 200
فايل بنج 200
فايل شيش باقى باقي انها باشد يانى 1000
اكر ميشة با اين بلاكين رهنماى كنيد ممنون
[/LEFT]
آهان، تازه فهمیدم منظورتون رو، اگه دقت کنید برای توضیح پارامتر دوم نوشته :
کد:
parameter2 is maximal size in bytes of each part of splited file
یعنی شما حداکثر اندازه هر تیکه رو 200 کیلوبایت تنظیم می کنید، حتی تیکه آخر هم بیشتر از 200 کیلو بایت نخواهد شد.
شما باید در دو مرحله فایل رو تقسیم کنید :

مرحله اول :
فایل رو با مقدار 200 * 5 کیلوبایت یعنی 1000 کیلوبایت یعنی 1000 * 1024 بایت به دو تیکه تقسیم کنید :
کد:
set$='MyFile|1024000|No'
File1 1000KB
File2 1000KB

مرحله دوم :
حالا تیکه اول (File1) رو با مقدار 200 کیلوبایت یعنی 200 * 1024 بایت به 5 قسمت تقسیم کنید :
کد:
set$='File1|204800|No'
File1.1 200KB
File1.2 200KB
File1.3 200KB
File1.4 200KB
File1.5 200KB

البته نمی دونم پلاگین اسم فایل های تیکه شده رو بر چه اساسی مشخص می کنه.
 

ali guard

Member
آهان، تازه فهمیدم منظورتون رو، اگه دقت کنید برای توضیح پارامتر دوم نوشته :
کد:
parameter2 is maximal size in bytes of each part of splited file
یعنی شما حداکثر اندازه هر تیکه رو 200 کیلوبایت تنظیم می کنید، حتی تیکه آخر هم بیشتر از 200 کیلو بایت نخواهد شد.
شما باید در دو مرحله فایل رو تقسیم کنید :

مرحله اول :
فایل رو با مقدار 200 * 5 کیلوبایت یعنی 1000 کیلوبایت یعنی 1000 * 1024 بایت به دو تیکه تقسیم کنید :
کد:
set$='myfile|1024000|no'
file1 1000kb
file2 1000kb

مرحله دوم :
حالا تیکه اول (file1) رو با مقدار 200 کیلوبایت یعنی 200 * 1024 بایت به 5 قسمت تقسیم کنید :
کد:
set$='file1|204800|no'
file1.1 200kb
file1.2 200kb
file1.3 200kb
file1.4 200kb
file1.5 200kb

البته نمی دونم پلاگین اسم فایل های تیکه شده رو بر چه اساسی مشخص می کنه.

خيلى ممنون از جوابتون بس اين براى اين حجم با درد ميخورد بس اكر من خواستم با يك فايلى بزرك تر سبليت كنم باد با دوبخش سبليت كنم اون وقت نميشة اين روش ايستفادة كرد
مسلن يك فايلى 30 ميكا بايت با دوبارت سبليت كنم فايل اول بشة 1400 بايت باقى فايل دووم بشة اين ج جور بكار ببرم البتة خيلى ممنون از رهنمايهاتون ايستفدة كردم
 

جدیدترین ارسال ها

بالا