الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

batch file

مغلق
بدأه AhmedSameh في 21 يوليو 2004 · 24 رد · 2,094 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف حالكم جميعا

لدي سؤال واتمني ان تكون لديكم اجابته

كيف يمكن عمل patch file يقوم بخلق مجلد اسمه هو تاريخ اليوم الحالي

علي سبيل المثال اليوم 2004/7/17 يقوم الباتش بعمل فولدر بأسم 2004/7/17 او اي شيء يدل علي تاريخ اليوم

انا اعرف انه سوأل صعب ولكن ان شاء الله انتم لها

والسلام عليكم

#2

سؤال ليس صعب و لكن يحتاج إلى خبير أو متمرس فى هذه النوعيه من الملفات ، ننتظر هذا الشخص سويا و سأفكر فيها ايضا :)

#3

الموضوع سهل و سوف أقوم بكتابة البرنامج لك إن شاء الله

تم تعديل هذه المشاركة بواسطة Asm4all في 22 يوليو 2004 في 01:43

#4

جزاك الله خيرا عنا يا أخى Asm4all :)

#5

السلام عليكم

اشكرك علي اهتمامك asm4all

ومنتظر الجواب

والسلام عليكم

#6

السلام عليكم ورحمة الله وبركاته..

فكرة البرنامج بسيطه جدا في كل لغات البرمجه فلا تخلو لغة برمجه من الداله التي تساعدك في الحصول على التاريخ , و داله لخلق مجلد جديد

فعلى سبيل المثال في الفيجوال بيسيك يوجد الداله Date للحصول على التاريخ ولا تنسى بتغيير العلامه / الى العلامه - لأن الاولى لا تصلح للأسماء والداله MkDir تقوم بخلق مجلد بالاسم الذي تعطيها اياه.

وكذلك باقي اللغات مع بعض الاختلافات.

ولكني فضلت أن أبني البرنامج بالأسمبلي لتوضيح بعض النقاط منها

1 ) أنك سوف تحصل على التاريخ مباشرة من ال BIOS بالطريقه التي يستخدمها نظام التشغيل نفسه ( مفيش حد أحسن من حد )

2 ) دعوه لكل مبرمج عربي أن يبدأ في تعلم هذه اللغه فهي ليست صعبه ويمكنها بناء أي برنامج مهما كان بسيط أو معقد لأنها هي الأصل.

;	Alazhar Univiresty
;	Faqulty of Engineering
;	Ahmed Samieh
;  	Asm4pic@yahoo.com
;	22 - 7 - 2004
;	DateDir.asm
;-----------------------------------------
.286
.model	tiny
codseg	segment	para
	assume	cs:codseg,ds:codseg,es:codseg,ss:codseg
        org     100h
Begin:	jmp	start  ;	نذهب الى بداية البرنامج

Date	db	'dd-mm-yy',0;	نحجز مكان في الذاكره لنخزن فيها التاريخ

start:
	push	cs
	pop	ds  ;	نجعل الداتا سيجمنت هو نفس الكود سيجمنت
	mov	ax,07h  ;	عنوان الأيام في ذاكرة البيوس
	xor	bx,bx  ;	لنستخدمه كعداد bx = 0 نجعل 
	call	ReadPort;	نستدعي الداله التي بنيناها
	mov	ax,08h  ;	عنوان الشهور في ذاكرة البيوس
	inc	bx  ;	نزيد العداد بمقدار 1
	call	ReadPort
	mov	ax,09h  ;	عنوان السنين في ذاكرة البيوس
	inc	bx
	call	ReadPort
	mov	dx,offset	ds:Date;	الاوفسيت الخاص بالمتغيرالذي أنشأناه dx نخزن في 
    ;	ds:dx عنوان المتغير الذي يحمل اسم المجلد يشار اليه ب
	mov	ah,39h  ;	نعد للداله التي تقوم بخلق مجلد
	int	21h  ;	ننادي المقاطعه لتنفذ دالة خلق المجلد
	mov	ax,4C00h;	نعد لغلق البرنامج
	int	21h  ;	ننادي المقاطعه للخروج من البرنامج

ReadPort	proc	near;	داله أنشأناها لتكرار استخدامها
	mov	dx,70h  ;	عنوان المنفذ الذي سوف نكتب عليه عنوان الذاكره
	out	dx,al  ;	نخرج العنوان من المنفذ
	inc	dx  ;	نزيد عنوان المنفذ الى عنوان البيانات
	in	al,dx  ;	نقرأ من المنفذ ما هو في الذاكره
	mov	ah,al  ;	ننسخ ما قرأناه
	and	ah,0F0h  ;	نفصل العشرات
	ror	ah,4  ;	نحولها الى آحاد
	add	ah,30h  ;	نحول الرقم الى حرف
	mov	byte ptr Date+bx,ah;	نخزنه في مكانه في المتغير الذي أنشأناه
	inc	bx
	and	al,0Fh  ;	نفصل الآحاد
	add	al,30h  ;	نحول الرقم الى حرف
	mov	byte ptr Date+bx,al;	نخزنه
	inc	bx
	ret  ;	نخرج من الداله
ReadPort	endp
codseg	ends
	end	Begin  ;	نهاية البرنامج

أرجو أن يكون الموضوع سهل وألا أكون عقدت الامور

وستعرف فائدة الأسمبلي عندما ترى البرنامج وتقارن حجمه مع أي برنامج بأي لغة أخري

اليك البرنامج.

MDIR.COM

تم تعديل هذه المشاركة بواسطة Asm4all في 23 يوليو 2004 في 02:56

#7

جزاك الله خيراً..البرنامج في غاية البساطة والجمال....ولكن عندي سؤال ؟

كيف اتحكم في عنوان الملف الذي اريد انشائه اي اقصد الpath اين اضعه في اي ريجيستر؟؟

واعيد جزاك الله خير.

#8

أعتقد أن الأخ AhmedSameh كان يريد patch file مكون من أوامر الدوس ، أم أننى لم أفهمه جيدا من الأول ؟؟

#9
md %date%

هذا هو الامر الانسب لكنه سيقوم بانشائها مجلد اسمه 07 Fri و داخله مجلد آخر 23 وفرع آخر 2004 لا اعلم طريقة بالدوس تغير صيغة التاريخ فلولا "/" لكان انشأه بصيغة التاريخ قطعة واحدة. ذلك ان التاريخ ياتى بهذه الصيغة

Fri 07/23/2004

فهل هناك طريقة لتغيير صيغة التاريخ بالدوس؟

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#10

الغريب انه الامر الان لا يعمل مع انه عمل معي قبل قليل وانشأ المجلد بفروعه وكنت احذفه ويعيد انشاءه، لا ادرى ما هو السر في عمله وعدم عمله لاحقا!!! هل من تفسير؟

على كل ما المانع من تشغيل ملف تشغيلي مثل الى عمله الاخ Asm4all من خلال ملف ال batch ؟

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#11

السلام عليكم

اولا: اشكر كل من اهتم بالسؤال

ثانيا:اريد ان اسأل الاخ asm4all هل البرنامج الذي ذكرته يعمل علي الاكس بي حيث انه تظهر هذه الرسالة عند تشغيل البرنامج

the system file is not suitable for running MS-DOS or windows applications

ثالثا: انا كنت اقصد فعلا patch file في الدوس

ارجو من الاستاذ عماد خليل ذكر محاولته سواء نجحت ام فشلت او نجحت ثم فشلت فهي سوف تساعدني كثيرا لذلك ارجوك اذكرها

والسلام عليكم

#12

أنا جربت الملف على Win XP Pro و عمل بدون مشاكل

#13

لاحظ انك ممكن تستعمل %date% كمتغير للتاريخ ولو وضعت هذا الامر

echo %date%

ستجد انه يطبع التاريخ

وعلى هذا الاساس عملت هذا الامر

md %date%

المشكلة هي في صياغة التاريخ بهذه الصيغة

Fri 07/23/2004

وبسبب وجود "/" ضمن %date% تظهر المشكلة ولو كان التاريخ ياتى بصورة 040723 مثلا لما كان هناك صعوبة.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#14

حلت ان شاء الله

md %date:~-4%%date:~4,2%%date:~7,2%

جرب واكد لنا.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#15

تعمل 100 100 يا أستاذ عماد

فعلا العبقرية لها رجالها (بدون مبالغة)

#16

الصيغة السابقة تكون كالتالى YYYYMMDD

اذا اردت صيغة YYMMDD تكون كالتالى

md %date:~12,2%%date:~4,2%%date:~7,2%

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#17

الان شفت ردك اخي joe911 ولكنها ليست كم اسميتها (عبقرية) بل لاني انا من جيل الدوس، شكرا على كل حال.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#18

اخي العزيز عماد الخليل

ممكن تشرح لي الكود اعلاه !؟

انا اشتغلت على الدوس لكن بشكل بسيط

ولكن لم اعرف المعنى الحقيقي لبعض الاحرف مثل ~ و بعض الارقام

إذا تكرمت عزيزي تشرح لي بشكل بسيط وسريع كيف تم التخلص من / بهذه الطريقة ؟؟

اشكرك مقدماً

#19

السلام عليكم

انت رائع رائع رائع يا استاذ عماد

كيف وصلت الي هذا المستوي

والسؤال حقيقي وليس لأبداء الأنبهار

يا ليتك تشرح لنا كيف وصلت الي هذا المستوي الرائع

انا عندما طلب مني ان اجيب علي هذا السؤال لم اتصور ان له حل من الاساس

ولكن قلت علي بسؤالكم وانتم بالتأكيد اعلم وقد كان

الف الف شكر

والسلام عليكم

#20

العفو اخي AhmedSameh، في هذا المنتدى كل واحد عنده معلومة وكلنا نكمل بعض، واليكم الطريقة:

حسنا لاحظ الان هو ليس %date% ولكنه مكون من 3 اجزاء وهذا جزء واحد للتبسيط

%date:~x,y%

حيث ~ تعني جزء من المتغير date وهي شبيهة بفكرة

mid (date,x,y)

طبعا تحتاج لثلاثة منها واحدة للسنة واخرى للشهر وثالثة للايام

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#21

:) واااااظح جداً

يسلمو يديك يالغالي من السطر

mid (date,x,y)

فهمت المقصوود بالكود

الله يعطيك العافيه ....

#22

اليكم البرنامج وهو مصمم بلغة كليبر 5 اندر دوس

set talk off

PRIVATE COUN, PERS, SCR1, x,cd1,dy,aa

dy = date()

coun = 0

MEN = 1

cd1 = substr(substr(dtoc(dy),7,8)+substr(substr(dtoc(dy),4,5),1,2)+substr(dtoc(dy),1,2),1,6)

DRAWBOX( 11, 9, 16, 14 , 1, 2 )

do while .t.

set color to

set color to w+/r+

@ 12,10 PROMP " A: "

@ 13,10 PROMP " B: "

@ 14,10 PROMP " C: "

@ 15,10 PROMP "EXIT"

MENU TO MEN

DO CASE

CASE MEN = 1

aa = "A:"

EXIT

CASE MEN = 2

aa = "B:"

EXIT

CASE MEN = 3

aa = "C:"

EXIT

CASE MEN = 4

RETU

ENDCASE

enddo

ndxscr = SAVESCREEN( 18, 20, 20, 60 )

run md &aa\&cd1

DO_BACK( "doc.DBF" )

DO_BACK( "tran.DBF")

DO_BACK( "pymaster.dbf")

DO_BACK( "loans.dbf")

DO_BACK( "parm.DBF")

DO_BACK( "shop.dbf")

DO_BACK( "unit.dbf")

DO_BACK( "SHOP.EXE")

RESTSCREEN( 18, 20, 20, 60, ndxscr )

PROCEDURE DO_BACK

PARAMETER dbf

PRIVATE cur_color, ndxscr

coun = coun + 5

cur_color = SYSCOLOR( 5 )

DRAWBOX( 18, 19, 20, 61 , 3, 3 )

set colo to w/w

@ 19,20 say space(coun)

inkey (1)

COPY FILE &dbf TO &aa\&cd1\&dbf

SET COLOR TO ( cur_color )

RETURN

سبحان الله و الحمد لله لا اله الا الله و الله اكبر

#23

الشكر للإستاذ عماد خليل على مجهوده ورده المتميز ومحاولاته فى الحل :) ، جزاك الله عنا خير جزاء

#24

السلام عليكم ورحمة الله وبركاته..

لقدت تفهمت الأمر خطأ

والحمد لله حلها الأخ عماد بصوره ممتازه ويمكن اضافة فاصل بين الأيام والأشهر والسنوات بهذه الطريقه

@md %date:~7,2%-%date:~4,2%-%date:~-4%
@exit

ولكن الفكره عندي تعمل على XP ولا تعمل على 98 ( لا أعرف كيف ) ؟

#25

ليس عندي 98، لكن كيف تظهر صيغة التاريخ او ناتج هذا الامر

echo %date%

تم تعديل هذه المشاركة بواسطة عماد الخليل في 28 يوليو 2004 في 23:53

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

هذا الموضوع مغلق.

مواضيع مشابهة