PDA

View Full Version : سوال: بدست آوردن تعداد یک فایل خاص در یک پوشه



abas1388
جمعه 15 آذر 1392, 21:38 عصر
سلام
با فرض اینکه در مسیر برنامه یک پوشه داریم که در آن چند فایل با فرمتهای مختلف وجود دارد . میخواهم تعداد فایل های که دارای نام myfile و با فرمت mdb. در این پوشه وجود دارد را بدست آورم.
با تشکر

Shahab.
جمعه 15 آذر 1392, 21:41 عصر
یک عدد کنترل فایل لیست باکس در فرم قرار دهید و مسیر آنرا برابر با پوشه ی موردنظرتون تنظیم کنید.
بعد با استفاده از یک حلقه ی for تک تک آیتم های فایل لیست باکس رو بررسی کنید هر کدوم برابر با myfile.mdb بود متغیر شمارنده رو بعلاوه ی یک کنید.

mehran901
شنبه 16 آذر 1392, 00:59 صبح
خیلی ساده با دستور dir میشه این کارو کرد > تعداد تمامی فایل ها با پسوند مشخص شده در مسیر مشخص شده رو بهتون میده

Dir ("c:\*.jpg")
Dim i%
On Error Resume Next
Do
Dir$
If Err.Number <> 0 Then Exit Do
i = i + 1
Loop
MsgBox i

vbhamed
شنبه 16 آذر 1392, 09:45 صبح
سلام
منظور abas1388 عزيز زياد واضح نيست چون اگر دنبال فايلي به نام myfile.mdb در يك پوشه هستن يا وجود نداره يا فقط 1 دونه هست كه اونم با $Dir ميشه پيداش كرد، اما تو يك پوشه كه نميشه چند تا فايل همنام وجود داشته باشه.

مهران جان، چرا از كنترل خطا استفاده كردي شايد جايي مشكل ساز باشه و نتونيم استفاده كنيم
Dim x$, i%
x = Dir("c:\*.jpg")
Do While x <> ""
i = i + 1
x = Dir$
Loop
MsgBox i

mehran901
شنبه 16 آذر 1392, 10:40 صبح
مهران جان، چرا از كنترل خطا استفاده كردي شايد جايي مشكل ساز باشه و نتونيم استفاده كنيم
Dim x$, i%
x = Dir("c:\*.jpg")
Do While x <> ""
i = i + 1
x = Dir$
Loop
MsgBox i
آره درست میگین ، اصولیش به همین شکله که شما نوشتین

سری اول کد رو خیلی سریع نوشتم با
do until dir = empty


loop
ی جا سر بی دقتی مشکل داشت منم عجله داشتم گفتم اینجوری فعلا بنویسم کارشون راه بیوفته

*

abas1388
شنبه 16 آذر 1392, 12:30 عصر
سلام
منظور abas1388 عزيز زياد واضح نيست چون اگر دنبال فايلي به نام myfile.mdb در يك پوشه هستن يا وجود نداره يا فقط 1 دونه هست كه اونم با $Dir ميشه پيداش كرد، اما تو يك پوشه كه نميشه چند تا فايل همنام وجود داشته باشه.

مهران جان، چرا از كنترل خطا استفاده كردي شايد جايي مشكل ساز باشه و نتونيم استفاده كنيم
Dim x$, i%
x = Dir("c:\*.jpg")
Do While x <> ""
i = i + 1
x = Dir$
Loop
MsgBox i




آره درست میگین ، اصولیش به همین شکله که شما نوشتین

سری اول کد رو خیلی سریع نوشتم با
do until dir = empty


loop
ی جا سر بی دقتی مشکل داشت منم عجله داشتم گفتم اینجوری فعلا بنویسم کارشون راه بیوفته

*
با سلام و تشكر فراوان بخاطر عنايت هر دو استاد عزيز و بزرگوار
راستش من در كنار برنامه ام يك پوشه با عنوان backup دارم و هر روز يك فايل از بانك اطلاعاتي برنامه كه اكسس است با فرمت yy-dd-mm-namefile در اين پوشه ذخيره مي نمايم. ميخواهم وقتي تعداد اين فايل هاي پشتيبان به تعداد مثلاً 10 رسيد بطور اتوماتيك دستور خالي نمودن و حذف فايل هاي فوق از پوشه داده شود .
با توجه به اينكه قبل از نام فايل تاريخ هر روز درج ميشود نام فايل تكراري نميشود .
اميدوارم منظورم را به درستي مطرح كرده باشم.
با تشكر مجدد

setroyd
شنبه 16 آذر 1392, 13:08 عصر
Private Sub Command1_Click()
Dim Names
Names = Dir("e:\ff\*.jpg")
Do
c = c + 1
If c = 10 Then
Set f = CreateObject("Scripting.FileSystemObject")
f.DeleteFile ("e:\ff\*.Jpg")
End If
Names = Dir
Loop Until Names = Empty
End Sub


اینم یه کد که 10 تا شد پاک کنه شما میتونی به جای jpg.* بزاری *.* کلا این کدیه که شما لازم داری جاییشم نفهمیدی بگو برایت توضیح بدم سعی کردم تا جایی که میشه برای قابل درک کد بزنم .

vbhamed
شنبه 16 آذر 1392, 13:22 عصر
با سلام و تشكر فراوان بخاطر عنايت هر دو استاد عزيز و بزرگوار
راستش من در كنار برنامه ام يك پوشه با عنوان backup دارم و هر روز يك فايل از بانك اطلاعاتي برنامه كه اكسس است با فرمت yy-dd-mm-namefile در اين پوشه ذخيره مي نمايم. ميخواهم وقتي تعداد اين فايل هاي پشتيبان به تعداد مثلاً 10 رسيد بطور اتوماتيك دستور خالي نمودن و حذف فايل هاي فوق از پوشه داده شود .
با توجه به اينكه قبل از نام فايل تاريخ هر روز درج ميشود نام فايل تكراري نميشود .
اميدوارم منظورم را به درستي مطرح كرده باشم.
با تشكر مجدد

سلام
setroyd عزيز كه جوابتون رو دادن، ولي طبق تجربه چندين ساله من بهتره فايلهاي بكاپ رو پاك نكنيد و بزاريد بمونه، براي اينكه حجمشون هم زياد نشه مي‌تونيد فايلها رو با كامپوننتهاي مثل XceedZip و ... فشرده كنيد.