PDA

View Full Version : پاک کردن فایل و فولدر در C



erf4n
پنج شنبه 02 اسفند 1386, 23:41 عصر
چطور میشه با c یه فایل رو پاک کرد مثلا در مسیر e:\b\a.inf می خوام a.inf رو پاک کنم !!
یا اگر داخل پوشه b یه آلمه فایل باشه چطور ؟ همچنین یه پوشه رو چطور پاک کنم؟
ممنون

erf4n
پنج شنبه 02 اسفند 1386, 23:46 عصر
لطفا هم برای ویندوز و هم لینوکس رو اگه امکانش هست بذارین
با تشکر
اگر خواستیم مثلا یرنامه خودش رو پاک کنه چی سرسش چی هست؟ هر دو سیستم عامل رو می خواستم .

Nima_NF
جمعه 03 اسفند 1386, 02:39 صبح
دستور پاک کردن فایل با دادن مسیر و هدر stdio.h :


remove(const char *path );


پاک کردن دایرکتوری خالی ،CRT مایکروسافت با هدر direct.h:



_rmdir(const char *dirname );

ابتدا فایل ها را باید پاک کنید. برای هر پلتفرم کد مربوط به دایرکتوری آن را استفاده کنید ، برای نمونه لینک زیر تابع این کار را می سازد:
Deleting a Directory Along with Sub-Folders (http://www.codeguru.com/cpp/w-p/files/folderdirectorymaintenance/article.php/c8999/)

erf4n
جمعه 03 اسفند 1386, 21:37 عصر
این شامل پاک کردن کردن خود برنامه می شه؟

erf4n
جمعه 03 اسفند 1386, 22:46 عصر
wow!!!
ببخشین این ++C هستش ولی من دنبال C می گردم !!
با سپاس

Mbt925
جمعه 03 اسفند 1386, 23:44 عصر
این شامل پاک کردن کردن خود برنامه می شه؟

منظورتون ار خود برنامه چیه؟

دوست عزیز کد مربوط به C هست:




remove(const char *path );

Nima_NF
شنبه 04 اسفند 1386, 00:13 صبح
احتمالا چون چند تا تابع که برای شما نا آشنا بودند دیدید فکر کردید برای ++C هستند ؛ دوست عزیز آن دو تابع و بسیاری از توابع استفاده شده در آن مثال یا برای C استاندارد هستند یا توابع مخصوص ویندوز که درهدر فایل windows.h قرار دارند.


این شامل پاک کردن کردن خود برنامه می شه؟
پاک کردن خود فایل اجرایی به همین راحتی نیست ، چون ویندوز به شما اجازه نمی دهد فایل در حال اجرا را پاک کنید. برای این کار افراد از batch فایل ها استفاده می کنند (bat.) که می توانند بعد از پاک کردن فایل exe برنامه مورد نظر ، خود را نیز پاک کنند ، در اینترنت جستجو کنید تا روش ساخت آن را یاد بگیرید.

erf4n
سه شنبه 07 اسفند 1386, 16:20 عصر
با سلام
مرسی از پاسخ هاتون و معذرت از بیسوادی خودم
سوالی حلا برام مطرح شد
خوب اگر فایلی باشه که ACCESS DENIED بده اون ها رو چی؟ چطور میشه پاک کرد مثلا اسم فایل دارای کاراکتری مثل $ یا % باشه !!
دوم اینکه چطور میشه و با چه کدی این فایل ها رو rename کرد؟؟
با تشکر

Nima_NF
سه شنبه 07 اسفند 1386, 21:31 عصر
خوب اگر فایلی باشه که ACCESS DENIED بده اون ها رو چی؟
خوب بستگی دارد ، اگر پروسه ای دارد از آن استفاده می کند باید اول پروسه بسته شود و یا lock استفاده از فایل را خودش ابتدا رها کند تا شما اجازه پاک کردن داشته باشید.



دوم اینکه چطور میشه و با چه کدی این فایل ها رو rename کرد؟؟
در ویندوز با هدر فایل <io.h> یا <stdio.h>:




rename( const char *oldname, const char *newname );

erf4n
چهارشنبه 08 اسفند 1386, 20:12 عصر
منظورم همون فایل هائی بود که از کاراکتر های خاص استفاده شده بود . یه سری فایل هست که حتی برای اجرا هم پیغام :Cannot read from source file رو میده !
مرسی از پاسختون امتحان میکنم.

erf4n
یک شنبه 12 اسفند 1386, 13:23 عصر
با سلام
این RENAME روی اونها جواب نداد!!!‌ میشه یه مثال هم بزارین تا ببینم مشکل از منه یا کد!!!

Nima_NF
یک شنبه 12 اسفند 1386, 15:10 عصر
با سلام
این RENAME روی اونها جواب نداد!!!‌ میشه یه مثال هم بزارین تا ببینم مشکل از منه یا کد!!!



#include <stdio.h>

int main ()
{
int result;

char old[] = "oldname.txt";
char new[] = "newname.txt";

result = rename( old , new );

if ( result == 0 )
// successful
else
// show Error

return 0;
}

erf4n
چهارشنبه 15 اسفند 1386, 16:15 عصر
با سلام !! مشکل جدید !!
من یه کد نوشتم که توسط اون می خواستم اسم فایل بگیرم و توسط برنامه اسم رو تغییر بدم اما اررور میگیرم ؟؟ مشکل کد در کجاست و آیا کاری رو که می خوام انجام میده یا نه؟:

#include <stdio.h>
#include <conio.h>
int main()
{

char *original_name[100];
char *new_name[102];
printf("hi u,!! this tool is for renaming files !!By Erix");
printf("\n plz enter your file's name!! ");
original_name[]=getchar();
FILE *Erix;
Erix = fopen("original_name",a+b);
if (!Erix){
printf("\n file not found!!");
getch();
exit(1);
}
printf("\n plz enter the new name u wanna!! :D !!");
new_name[] = getchar();
rename( original_name , new_name );
fcloseall();
printf("\n rename finished !");
return 0;
getch();
}

erf4n
چهارشنبه 15 اسفند 1386, 16:17 عصر
لازم به ذکر هست که در خط هائی که getchar و rename هست اررور میده!! البته وقتی از scanf استفاده میشه کاملا برنامه کامپایل میشه اما درست کار نمی کنه!!

hi level hdd
جمعه 17 اسفند 1386, 10:38 صبح
برای پاک کردن فایل بنویس

remove("e:/b/a.inf") ta pak shavad

erf4n
سه شنبه 27 فروردین 1387, 12:23 عصر
مشکل کد در کجاست و آیا کاری رو که می خوام انجام میده یا نه؟

Nima_NF
سه شنبه 27 فروردین 1387, 15:03 عصر
برنامه خطاهای بسیاری داشت که بادقت مطالعه کنید تا متوجه همه آن ها شوید،

نکته: نیازی به باز کردن فایل نیست، اگر برای تست صحت وجود این کار را انجام داده اید حتما باید فایل را قبل از rename کردن ببندید در غیر این صورت rename اجرا نمی شود.
ضمنا getchar یک کارکتر دریافت می کند نه رشته.



#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{

char original_name[100];
char new_name[102];
printf("hi u,!! this tool is for renaming files !!By Erix");
printf("\n plz enter your file's name!! ");
gets (original_name);

FILE *Erix;

Erix = fopen(original_name,"r");
if (!Erix){
printf("\n file not found!!");
getch();
exit(1);
}
printf("\n plz enter the new name u wanna!! :D !!\n");
gets (new_name);

fcloseall(); // <----

int res = rename( original_name , new_name );

if ( res != 0 )
printf( "Could not rename" );

return 0;
getch();
}


برای مثال فایل نوشته ای با نام test.txt در درایو c بسازید و با دو ورودی زیر امتحان کنید:
c:\test.txt و c:\test2.txt