PDA

View Full Version : راهنمایی برای تبدیل چند فایل به یک فایل با قابلیت تفکیک فایل ها؟



one hacker alone
شنبه 11 شهریور 1391, 02:29 صبح
با یاد خدا
سلام دوستان
با فرض اینکه بخواهیم یک برنامه بک اپ گیری بسازیم من در قسمتی از کار نیاز به این دارم که فایل های موجود در یک پوشه رو برای تبدیل به یک فایل کنه
جزئیات:
خوب گام اول پیدا کردن اسم فایل ها در مسیر موجود هست که با کنترل های خود وی بی ساده هست
با فرض اینکه فایل های مسیر c:/folder به شکل زیر باشند
a1.txt
a2.dat
a3.htm

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

شما چه راه حلی دارین؟

mohammadriano
شنبه 11 شهریور 1391, 03:16 صبح
سلام

Sub Zip_All_Files_in_Folder(ByVal FolderName As String, ByVal FileNameZip As String)
Open FileNameZip For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1

Dim oApp As New Shell
oApp.NameSpace(FileNameZip).CopyHere oApp.NameSpace(FolderName).Items
End Sub
Private Sub Command_Click()
Zip_All_Files_in_Folder "c:/folder", "C:\yourPatch\yourName.zip"
End Sub

فلدر رو تبدیل به zip می کنه.
پسوند zip رو می تونید به پسوند دلخواه خودتون تغییر بدید.

فکر بسیار جالبی هست.
نرم افزار Ashampoo Burning Studio مثل ایده شما همچین کاری رو انجام میده و فایل های کاربر رو به iso معروف ترین پسوند Image تبدیل می کنه.
92143
موفق باشی

mohammadriano
شنبه 11 شهریور 1391, 17:28 عصر
البته یادم رفت منبع کدها رو بنویسم
http://barnamenevis.org/showthread.php?343115#2
Asemane Haftom (http://barnamenevis.org/member.php?182272-Asemane-Haftom)

Veteran
شنبه 11 شهریور 1391, 17:30 عصر
برای اینکار باید با فایل های باینری کار کرد.

one hacker alone
شنبه 11 شهریور 1391, 21:18 عصر
سلام

Sub Zip_All_Files_in_Folder(ByVal FolderName As String, ByVal FileNameZip As String)
Open FileNameZip For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1

Dim oApp As New Shell
oApp.NameSpace(FileNameZip).CopyHere oApp.NameSpace(FolderName).Items
End Sub
Private Sub Command_Click()
Zip_All_Files_in_Folder "c:/folder", "C:\yourPatch\yourName.zip"
End Sub

فلدر رو تبدیل به zip می کنه.
پسوند zip رو می تونید به پسوند دلخواه خودتون تغییر بدید.

فکر بسیار جالبی هست.
نرم افزار Ashampoo Burning Studio مثل ایده شما همچین کاری رو انجام میده و فایل های کاربر رو به iso معروف ترین پسوند Image تبدیل می کنه.
92143
موفق باشی

ممنون نمیدونستم که همچین قضیه ای هست ولی خوب الان که فکرشو میکنم کار منطقی هم هست و میتونه به این شکل باشه
سوالی که برام پیش اومد برای استفاده از این zip من یه مشکلی دارم اونم اینه که وقتی حجم فایل زیاد باشه پنجره مربوط به کپی ویندوز ظاهر میشه اما من نمیخوام این اتفاق بیفته چجوری میتونم پنهانش کنم؟

برای اینکار باید با فایل های باینری کار کرد.

یعنی هرگاه ما با فایل های اجرایی کار داشته باشیم باید فایل هارو به شکل باینری دست کاری کنیم و برای فایل های غیر اجرایی به صورت ترتیبی. درسته؟

محسن واژدی
شنبه 11 شهریور 1391, 22:22 عصر
یعنی هرگاه ما با فایل های اجرایی کار داشته باشیم باید فایل هارو به شکل باینری دست کاری کنیم و برای فایل های غیر اجرایی به صورت ترتیبی. درسته؟ سلام علیکم
خیر بجز فایل های با ساختار متنی (txt,ini,inf و...) مابقی از نوع باینری هستند (فایل های اجرایی، صوتی، تصویری، کتابخانه ها، تصاویر و ...)

موفق باشید

mohammadriano
شنبه 11 شهریور 1391, 23:16 عصر
سوالی که برام پیش اومد برای استفاده از این zip من یه مشکلی دارم اونم اینه که وقتی حجم فایل زیاد باشه پنجره مربوط به کپی ویندوز ظاهر میشه اما من نمیخوام این اتفاق بیفته چجوری میتونم پنهانش کنم؟

از کامپوننت استفاده کنید اگه Shell نمی تونه کمکتون کنه
بهتره از این ↓ کامپوننت ها استفاده کنید:

92207
zip and unzip

92206
فایل ها رو بهتره در مسیر زیر ↓ کپی کنید.
C:\Windows\System32

و دستورات مربوط به کامپوننت

Private Sub Command_Click()
Zip.InputFile = "J:\myFolder"
Zip.OutputFile = "C:\aa.bak" ' .bak or your sufix
Zip.Go
End Sub

موفق باشی

one hacker alone
سه شنبه 14 شهریور 1391, 11:29 صبح
از کامپوننت استفاده کنید اگه Shell نمی تونه کمکتون کنه
بهتره از این ↓ کامپوننت ها استفاده کنید:

92207
zip and unzip

92206
فایل ها رو بهتره در مسیر زیر ↓ کپی کنید.
C:\Windows\System32

و دستورات مربوط به کامپوننت

Private Sub Command_Click()
Zip.InputFile = "J:\myFolder"
Zip.OutputFile = "C:\aa.bak" ' .bak or your sufix
Zip.Go
End Sub

موفق باشی

ممنون از راهنماییتون
اگه از این کامپوننت استفاده کنم پس باید در هر سیستمی که اجرا میشه کنارش باشه؟ چون میخوام برنامه حالت قابل حمل باشه ( با توجه به اینکه گفتین باید داخل system32 کپی بشه)

لینک ضمیمه هم مشکل داره ممنون میشم اصلاح کنید

درضمن کدی که برای zip کردن معرفی کرده بودین پوشه رو فشرده میکنه . چجوری میتونم 2 یا چند فایل رو فشرده کنم نمیخوام بریزم تو پوشه بعد پوشه رو فشرده کنم

setroyd
سه شنبه 14 شهریور 1391, 17:37 عصر
خوب شما ocx رو بزارید تو resource بعد extract کنید تو system32 اینجوری قابل همل هم میشه کرد .

mohammadriano
سه شنبه 14 شهریور 1391, 21:10 عصر
سلام



اگه از این کامپوننت استفاده کنم پس باید در هر سیستمی که اجرا میشه کنارش باشه؟ چون میخوام برنامه حالت قابل حمل باشه ( با توجه به اینکه گفتین باید داخل system32 کپی بشه)


کپی اتوماتیک و رجیستر کردنشون مشکلی نداره
شما برنامه رو بنویسید بعد با App.Path راحت میشه کپی شون کرد(مثال↓)


Private Sub Form_Load()
On Error Resume Next
Dim fs As Variant
Set fs = CreateObject("scripting.filesystemobject")
If fs.fileexists("C:\Windows\System32\UnZipper.ocx") = False Then
fs.copyfile App.Path + "\UnZipper.ocx", "C:\Windows\System32\"
Shell "explorer /n, /open," + App.Path + "\UnZipper.ocx"
End If
If fs.fileexists("C:\Windows\System32\Zipper.ocx") = False Then
fs.copyfile app.path+ "\Zipper.ocx", "C:\Windows\System32\"
Shell "explorer /n, /open," + App.Path + "\Zipper.ocx"
End If
End Sub


البته بنده با ریسورس آشنایی ندارم من این طوری رجیستر می کنم
دو فایل OCX باید در کنار فایل exe باشند↓

92364



لینک ضمیمه هم مشکل داره ممنون میشم اصلاح کنید


لینک قبلی فعال هست
لینک جدید (http://up.shamsipour-ac.ir/uploads/files/1391/shahrivar/Zip-unZip.zip)



درضمن کدی که برای zip کردن معرفی کرده بودین پوشه رو فشرده میکنه . چجوری میتونم 2 یا چند فایل رو فشرده کنم نمیخوام بریزم تو پوشه بعد پوشه رو فشرده کنم

Zip کردن یک فایل↓

Private Sub Command_Click()
Zip.InputFile = "J:\22.jpg"
Zip.OutputFile = "C:\aa.zip" ' .bak or your sufix
Zip.Go
End Sub


برای زیپ کردن چند فایل می تونید فایل ها رو ابتدا داخل یک پوشه انتقال بدید بعداً Zip کنید(مثال↓).


Dim fs As Variant
Set fs = CreateObject("scripting.filesystemobject")
fs.copyfile "C:\bank.mdb", "C:\folderzip"
fs.copyfile "C:\flower8.png", "C:\folderzip"
Private Sub Command_Click()
Zip.InputFile = "C:\folderzip"
Zip.OutputFile = "C:\aa.bak" ' .bak or your sufix
Zip.Go
End Sub


موفق باشی