برگزیده های پرشین تولز

سوال فنی ........bat file در ویندوز ......اساتید کمک

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
من نیاز دارم که برای اجرای یه برنامه ابتدا تاریخ ویندوز رو تغییر بدم (تا برنامه که trial بوده اجرا بشه) و بعد که برنامه باز شد، دوباره تاریخ سیستم رو به حالت اول برگردونم.
حلا سئوال من اینه:
چطوری میشه فایلی (مثل bat file در داس) درست کرد که این تغییر تاریخ و اجرای برنامه رو به صورت خودکار انجام بده؟ یعنی با اجرای این فایل: 1.تاریخ سیستم به زمان خاصی تغییر پیدا کنه، 2.نرم افزار من اجرا بشه و 3.تاریخ به زمان اولیه برگردانده بشه.

خواهشن اگه کسی راهی بلده بگه
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
این متن رو در یک فایل با پسوند bat ذخیره کن:
کد:
@echo off
set today="%date%"
date MM-DD-YYYY
XXX
for /F "tokens=2" %%q in (%today%) do date %%q

MM-DD-YYYY همون تاریخی هست که میخوای قبل از اجرای برنامه ات ست کنی. XXX هم مسیر و اسم کامل برنامه ات هست که اگر این بچ فایل در همون فولدر برنامه باشه اسم تنها کفایت میکنه.

همین!
 

mohammad_1ta

Registered User
تاریخ عضویت
4 سپتامبر 2004
نوشته‌ها
314
لایک‌ها
10
سن
33
محل سکونت
تهران
شما مطمعن هستی که برنامه تاریخ رو از کامپیوترت میگیره؟معمولش اینه که برنامه وقتی EXPIRE میشه تو جایی ثبت میکنه دیگه به تاریخ کامپیوتر نیگاه نمیکنه مگه این که برنامه ضعیف باشه اگه حجمش کمه خوشحال میشم یه نیگاهی بهش بندازم
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
ظاهرا" ایشون تست کرده و با تغییر تاریخ نتیجه گرفته - حالا فقط میخواد هر بار بصورت دستی تاریخ رو پس و پیش نکنه.
 

Mojgan110

کاربر تازه وارد
تاریخ عضویت
5 مارس 2006
نوشته‌ها
243
لایک‌ها
12
محل سکونت
www.DotNetSource.com
آقاي مازولاق

اينهايي كه نوشيين اسمش چيه ؟؟ زبون خاصيه ؟ يا دستورات داس هست ؟ چيه كلا" ؟!!
 

mohammad_1ta

Registered User
تاریخ عضویت
4 سپتامبر 2004
نوشته‌ها
314
لایک‌ها
10
سن
33
محل سکونت
تهران
مازولاق عزیز ممنون ازین که جواب دادین
اما خوب همیشه راه بهتری هم هستش
( در جواب این کهخواهشن اگه کسی راهی بلده بگه)
باید خدمتتون عرض کنم که پچ کردن فایل بهترین راهیه که به نظر من میرسه دیگه نه احتیاجه که تاریخو عوض کنین نه فایل اضافی لود کنین..
چون تو این راه ایشون باید یه فایل .BAT رو هر روز تغییر بدن و تاریخ روز رو توش بذارن.. مگه این که تو این فایل BAT اولی که لود میشه دستوری قبل از ست کردن DATE جدید باشه که تاریخ امروز رو قبل از تغییر بریزه تو BAT دوم
 

tkavosh

Registered User
تاریخ عضویت
24 مارس 2005
نوشته‌ها
736
لایک‌ها
71
محل سکونت
مشهد

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
مازولاق عزیز ممنون ازین که جواب دادین
اما خوب همیشه راه بهتری هم هستش
( در جواب این کهخواهشن اگه کسی راهی بلده بگه)
باید خدمتتون عرض کنم که پچ کردن فایل بهترین راهیه که به نظر من میرسه دیگه نه احتیاجه که تاریخو عوض کنین نه فایل اضافی لود کنین..
چون تو این راه ایشون باید یه فایل .BAT رو هر روز تغییر بدن و تاریخ روز رو توش بذارن.. مگه این که تو این فایل BAT اولی که لود میشه دستوری قبل از ست کردن DATE جدید باشه که تاریخ امروز رو قبل از تغییر بریزه تو BAT دوم

مسلما" پچ کردن بهتره ولی من فقط به سئوال جواب دادم.
ضمنا" با این روش نیازی نیست که این بچ فایل رو هر روز ادیت کرد. چون خودش قبل از اجرای برنامه اول تاریخ صحیح رو ذخیره میکنه و بعد تاریخ سیستم رو به عقب برمیگردونه و برنامه رو اجرا میکنه. قبل از خروج هم تاریخ رو سر جای خودش برمیگردونه.
 

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
آقا ای ول به این همه مرام و اطلاعات. دستتون درد نکنه. فکر نمیکردم دفعه بعدی که میام اینجا اینقدر مطلب راجع به سئوالم داشته باشم.

اولا در جواب mohammad جان بگم که این برنامه expire شدن تو کارش نیست و فقط ابتدای اجرای برنامه به تاریخ سیستم نگاه میکنه. حجم برنامه زیاد نیستو ایشالا می ذارمش. محبت کردید براش crack نوشتین که خیلی هم ممنون میشم.

در مورد bat فایلی که mazoolagh عزیز نوشتن خیلی خیلی ممنونم. تست کردم. عالی بود. فقط یه مشکل: برنامه شما بعد از اینکه فایل بنده رو اجرا کرد. باز و منتظر میمونه تا زمانی که من فایل برنامه خودم را ببندم و اون موقع هست که تاریخ رو به حالت اولیه برمیگردونه و بسته میشه. برنامه من فقط موقع ابتدای اجرا تاریخ سیستم رو چک میکنه و اگه بعد از لود شدن برنامه (که 1 تا 2 ثانیه بیشتر طول نمیکشه)، تاریخ رو به حالت اول برگردونم هیچ مشکلی پیش نمیاد و برنامه باز هم به خوبی کار میکنه. حالا از اونجایی که من با برنامه خودم فایل های متن رو ایجاد و یا ادیت میکنم، می خوام درصورت امکان موقع کار با برنامه و ذخیره فایلهای متن تاریخ سیستم مقدار واقعی رو داشته باشه. میشه bat file رو به این صورت تغییر بدی؟ یعنی وقتی برنامه من رو اجرا کرد، بلافاصله تاریخ رو به حالت اول برگردونه و بسته بشه؟ خیلی خیلی ازت ممنونم.
یه خواهش دیگه: میشه لطف کنید و خط آخر این برنامه (bat file) رو که بالا نوشتین دقیق توضیح بدین؟ من خیلی دلم می خواد بیشتر در مورد دستورات و نحوه برنامه نویسی bat fileها اطلاعات بیشتری داشته باشم. مرجع خوبی سراغ دارین؟

از Tkavosh جان هم ممنونم بخاطر لینکشون. زدم که برنامش دانلود بشه. راستش قبلاً برنامه مشابهی (که دقیقاً کارش همین بود رو گرفته بودم) ولی متاسفانه هم تاریخ رو به حالت اولیه بر نمی گردوند و هم اینکه هر دفعه بعد از اجرا مجبور بودم خودم این برنامه جدید رو close کنم که عملاً تغییر دستی تاریخ رو ترجیح دادم.
الان بیشتر هدفم یاد گرفتن بود.

یه سئوال دیگه: ببینم الان تو ویندوز هنوز هم برای این جور کارها فقط از command prompt و bat file استفاده میشه؟ یعنی برنامه یا محیط کد نویسی دیگه ای وجود نداره که تحت dos نباشه؟ چیزی مثل فایل های ini
 

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
اگه حجمش کمه خوشحال میشم یه نیگاهی بهش بندازم

برنامه رو اینجا (http://www.irandg.com/ali/up.zip) آپلود کردم. اسم برنامه SC Unipad هست. یه ادیتور ساده متن برای Unicode ولی چیز خیلی به درد بخوریه. ضمناً سایتش هم اینه: http://www.unipad.org که ازش میتونید نسخه جدید برنامه (trial) رو دانلود کنید. [متاسفانه نسخه های بعدی برنامه مثل این نسخه نیست و یا وقتی expire میشن کاریشون نمیشه کرد. و یا اینکه کلاً اجازه کار با فایلهای با حجم های بالا رو نمیدن.]
یه بار هم دنبال crack براش گشتم ولی چیزایی که پیدا کردم کار نمیکرد.
در هر صورت اگه کسی تونست برای این یا برای نسخه های جدیدترش crack بنویسه یا پیدا کنه، (طوری که بشه بدون محدودیت فایلهای بزرگ رو هم باهاش edit کرد خیلی ممنون میشم.)
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
خوب - bat فایلها در حالت عادی قابلیت کار بصورت موازی رو ندارن یعنی دستورات پشت سر هم اجرا میشن و بهمین خاطر هست که تا برنامه تموم نشه تاریخ بجای اولش برنمیگرده.

ولی خوشبختانه میشه با دستور start چندین پروسس رو بصورت پارالل انجام داد. ایندفعه 2 تا بچ فایل باید استفاده کنیم. یک بچ فایل که فقط کارش تغییر تاریخ و برگردوندنش به مقدار واقعی بعد از یک مدت کوتاه هست. فرضا" اسم این رو میگذاریم change_date.bat :

کد:
@echo off
set today="%date%"
date 2000-1-1
ping -n 2 127.0.0.1 >nul
for /F "tokens=2" %%q in (%today%) do date %%q
exit

اون دستور ping رو فقط بخاطر ایجاد یک وقفه زمانی گذاشتیم که مطمئن باشیم در طی اون برنامه اصلی لود میشه.

حالا بچ فایل اصلی رو به اینصورت مینویسیم:

کد:
@echo off
start /B changedate.bat
start XXX
exit
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
میشه لطف کنید و خط آخر این برنامه (bat file) رو که بالا نوشتین دقیق توضیح بدین؟ من خیلی دلم می خواد بیشتر در مورد دستورات و نحوه برنامه نویسی bat fileها اطلاعات بیشتری داشته باشم. مرجع خوبی سراغ دارین؟
کد:
for /F "tokens=2" %%q in (%today%) do date %%q
این خط کارش اینه که میاد قسمت دوم تاریخ رو بعنوان پارامتر به دستور date پاس میکنه. البته اینکار بخاطر این هست که بصورت عادی دستور date غیر از تاریخ روز هفته رو هم برمیگردونه ولی برای set کردن روز هفته نباید داد.


یه سئوال دیگه: ببینم الان تو ویندوز هنوز هم برای این جور کارها فقط از command prompt و bat file استفاده میشه؟ یعنی برنامه یا محیط کد نویسی دیگه ای وجود نداره که تحت dos نباشه؟ چیزی مثل فایل های ini
فایلهای ini توسط برنامه مربوط به خودشون خونده و تفسیر میشن ولی اجرایی نیستن. معمولا" برای ست کردن یک سری پارامترهایی است که فقط توی خود اون برنامه مفهوم داره.
ولی دستورات فایلهای بچ توسط مفسر سیستم عامل تفسیر و اجرا میشن. علاوه بر دستورات داخلی و خارجی dos یک سری دستورات کنترلی نظیر همینهایی که اینجا مطرح شد داره. تعداد این دستورات کنترلی 20-30 بیشتر نیست ولی مسلط شدن بهشون تجربه میخواد.
 

mohammad_1ta

Registered User
تاریخ عضویت
4 سپتامبر 2004
نوشته‌ها
314
لایک‌ها
10
سن
33
محل سکونت
تهران
مازولاق عزیز خیلی ممنون بابت توضیحات
ames گرامی اون فایلی که آپ کردید رو دانلود کردم چون برنامه قدیمی بود مثل آب خوردن کرک شد فقط 1 دقیقه وقت گرفت..!! براتون پچ رو آپ کردم :دی اگه مشکلی بود لطفاً اطلاع بدین اما فکر نمیکنم
http://rapidshare.de/files/35640741/scunipad-patch.zip.html
 

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
یکتا جون دستت درد نکنه. patchet عالی بود :دی
میگم علی، حالا چرا ایدیت اینجا محمدِ؟ (فوضولی :D)
 

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
جناب Mazoolagh خیلی خیلی ممنون. bat fileها عالی کار می کنن. فقط اگه اجازه بدن چند تا سوال:

1.توی bat file اول دیگه چه روشی میشه بجای استفاده از ping برای دادن فاصله زمانی استفاده کرد؟
2.درمورد bat fileهای بالا (اولیش)، فقط از این بابت که دوستانی که بعداً این مطالب رو میخونن اشتباه نکنن، یه اشتباه کوچولو تو این فایل هست که اگه میشه اصلاحش بفرمایید:
کد:
@echo off
set today="%date%"
date 2000-1-1 [b] correct is like this: 1-1-2000[/b]
ping -n 2 127.0.0.1 >nul
for /F "tokens=2" %%q in (%today%) do date %%q
exit

3.مرجعی برای یاد گیری این bat fileها و استفاده از tagهاش سراغ دارین؟
4.یه کار دیگه ای که مدتهاست میخوام یاد بگیرم با bat file بکنم اینه: فرض کنید یه سری فایل داریم که همشون تو یه فولدر ذخیره شدن و هر کدوم اسم های مختلفی دارن. حالا میخوایم مثلاً به نحوی ساختار بندی شده اسم همه اونا رو تغییر بدیم. مثلاً می خوایم اسم همه اونا به این نحو تغییر داده بشه که اولِ اسم همه فایلها لغت "file" نوشته بشه، بعدش از 1 تا هر تعدادی فایل داریم، شماره فایل بیاید و در آخر پسوند فایل هم بدون تغییر باقی بمونه. یعنی چیزی مثل این: file1.jpg - file2.gif - file3.txt - file4.jpg - و الی آخر. شما براش راهی بلدید؟ (که مسلماً بلدید، میشه بگید؟)

باز هم خیلی خیلی از وقتی که همه دوستان میذارن متشکرم. - (ایشالا عروسیتون :D)
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
1- روش اصلی البته این نیست بلکه باید دستور choice رو استفاده کرد. ولی بدلیل اینکه دستور external هست باید فایلش رو روی کامپیوترتون داشته باشین که ندارین! (یک جستجو برای choice.com یا choice.exe بکنین معلوم میشه) این روش پینگ به لوکال یک روش جا افتاده و مرسوم هست که به ما اجازه میده تاخیرهای زمانی دلخواه رو با دقت خوبی ایجاد کنیم.
اگر ماشین کد بلد باشین میتونین یک برنامه کوچیک تو محیط debug بنویسین و بصورت com ذخیره کنین که تاخیر زمانی رو بصورت پارامتر بگیره و دقیق هم باشه. حجمش شاید 100 بایت هم نشه!

2- این فرمت تاریخ بستگی به تنظیمات date در reginal settings داره. روی کامپیوتر من این شکلی هست و ممکنه با کامپیوتر شما فرق کنه.

3- بهترین مرجع خود web هست و جستجو در گوگل. من چون از قدیم با بچ فایل آشنایی داشتم و رفرنسهای اصل داس رو هم داشتم نمیدونم چه سایتی میتونه به شما کمک کنه.

4- این فایلها اسامی پراکنده دارن یا اسامیشون تابع نظم خاصی هست؟
 

Ames

Registered User
تاریخ عضویت
6 دسامبر 2004
نوشته‌ها
122
لایک‌ها
0
محل سکونت
Tehran
خیلی خیلی از راهنمایی هاتون ممنون. کامپیوتر رو گشتم. choice نداشتم. توی Dos هست؟

در مورد مسئاله جدیدی هم که طرح کردم، اسم اولیه فایلها نظم خاصی نداره. (ولی توجه کنید که نمی خوام پسوند اونها تغییری بکنه. فقط میخوام اسم خود فایلها نظم خاصی، همونطور که قبلاً گفتم، رو پیدا کنه)

باز هم ممنون.

راستی یکتا جان، تو که اسمبلی بلدی میتونی همچین فایلی که جنب mazoolagh گفتن رو بسازی؟:
1- اگر ماشین کد بلد باشین میتونین یک برنامه کوچیک تو محیط debug بنویسین و بصورت com ذخیره کنین که تاخیر زمانی رو بصورت پارامتر بگیره و دقیق هم باشه. حجمش شاید 100 بایت هم نشه!
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
این مساله آخر رو فکر نمیکنم بشه با امکانات موجود در بچ پروسس انجام داد. ولی با کمک WSH خیلی راحت میشه اینکار و حتی کارهای بسیار پیچیده رو براحتی انجام داد.
 
بالا