هر چه فرمانهاي DOS را بهتر بفهميد ، در سيستم خود ( چه اعلان فرمان و چه شل ) كارايي بيشتري خواهيد داشت . فرمانهاي بهتر ، فرمانهاي قوي تري هستند كه به نوبه خود برنامه هاي دسته اي قويتر و امكانات بيشتري را در اختيار شما قرار ميدهند.

تعيين مسير ورودي و خروجي
بيشتر يوتيليتي هاي DOS ورودي را از صفحه كليد دريافت كرده و خروجي را به شكل پيغامهايي به صفحه نمايش ارسال مي كنند . فرمان TIME مثال خوبي در اين مورد مي باشد:

ورودي و خروجي استاندارد
بسياري از يوتيليتي هاي DOS خدمات ورودي / خروجي استاندارد را طلب مي كنند . به منظور انجام عمليات ورودي / خروجي استاندارد ، DOS از ابزاري بنام CON ( مخفف Console) براي خواندن و نوشتن استفاده مي كنند كه معمولابراي صفحه كليد و مونيتور تعريف مي شود. اما اين امكان نيز وجود دارد كه با استفاده از علامتهاي جدول ۱ ـ ۲ ورودي / خروجي را از CON به فايلها يا ابزارهاي ديگر هدايت نماييد.
جدول ۱ ـ ۲ : علامتهاي قابل استفاده در تعيين مسير

علامت شرح
< souece ورودي را از يك فايل يا ابزار خاص دريافت مي كند.
> destination خروجي را به يك فايل يا ابزار خاص هدايت ميكند . در اين حالت اطلاعات
خروجي روي اطلاعات فايل موجود نوشته مي شود.
>> destination خروجي را به يك فايل يا ابزار خاص هدايت مي كند . در اين حالت اطلاعات
خروجي به اطلاعات موجود در فايل اضافه مي شود

command 1 \ command 2 خروجي فرمان command 1 ورودي فرمان command 2 مي شود.
علامتهاي مذكور در جدول ۱ ـ ۲ توسط DOS رزرو شده اند و در نام فايل ها يا دايركتوريها قابل استفاده نيستند.
مسير تمام وروديها / خروجيها را نمي توان تعيين نمود. به عبارت كاملتر ، تعيين مسير در مواردي امكان پذير است كه خدمات ورودي / خروجي استاندارد مورد نياز باشد . بسياري از برنامه هاي كاربردي از تكنيكهاي ورودي / خروجي خاص خود استفاده مي كنند ( نه استانداردهاي DOS ) و در نتيجه عمليات تعيين و تغيير مسير در آنها قابل اعمال نمي باشد.

علاوه بر اين ، مسير ورودي و خروجي تمام يوتيليتي هاي DOS را نيز نمي توان تعيين نمود. به عنوان مثال ، فرمانهاي TYPE و COPY از ورودي استاندارد استفاده نمي كنند ، اما چون براي خواندن از يك فايل يا ابزار طراحي شده اند ، تعيين مسير ورودي در آنها لازم نيست . به همين ترتيب ، خروجي فرمان PRINT را نمي توان به يك فايل هدايت نمود، چرا كه از ابزار ورودي / خروجي استاندارد استفاده نمي كند. تنها بخشي از خروجي PRINT كه مسير آن قابل تغيير است پيغام تاييدي است كه معمولا در ابزار خروجي استاندارد به نمايش در مي آيد.

خروجي خطاي استاندارد
چنانچه يك يوتيليتي DOS با وضعيت خطايي ( error) مواجه شود ، پيغام خطا را نه به ابزار خروجي استاندارد بلكه به ابزار خروجي خطاي استاندارد ارسال مي كند (DOS آن را درCON به نمايش در مي آورد ) چون عمليات تعيين مسير فقط روي خروجي استاندارد اثر مي گذارد ، نه خروجي خطاي استاندارد ، مسير پيغامهاي خطا را نمي توان تعيين نمود . همان گونه كه در اينجا ملاحظه مي كنيد ، خروجي هر فرمان ممكن است از هر دو نوع مزبور باشد:

c:\> DIR BIMAX
Volume in drive C is HARD DRIVE
Volume Serial Number is 171 D – ۷۸ E 4
Directory of c:\
File not found
C : \>
اگر مسير خروجي فرمان فوق را تغيير دهيد ، باز هم پيغام خطاي زير به نمايش در مي ايد :
c:\ DIR BIMAX > BIMAX.DIR
file nit found
c : \>
در اين بين ، فايل حاوي خروجي هدايت شده BIMAX.DIR فقط حاوي پيغامهاي استاندارد خواهد بود :
Volume in drive C is HARD DRIVE
Volume serial Number ic 171D – ۷۸E4
Directory of c:\

اين امر ممكن است هميشه جالب توجه نباشد ، اما دانستن آن باعث افزايش توانايي شما در استفاده از فرمانها مي باشد . به عنوان مثال ، مي توانيد يك ماكرو DOSKEY بنويسيد كه وجود يا عدم وجود فايلي را به شما اطلاع دهد:
DOSKEY ISFILE = DIR $1 $G NUL
فرمان فوق ، ماكرويي بنام ISFILE تعريف مي كند كه به دنبال مشخصه فايل مورد نظر گشته و خروجي استاندارد را به NUL ( خنثي ) هدايت مي كند . تنها پيغام File not found به نمايش در خواهد آمد.
با تعريف مجدد CON توسط فرمان CTTY ميتوانيد مسير تمام وروديهاي صفحه كليد و خروجيهاي صفحه نمايش را تغيير دهيد. اين تكنيك در فصل ۱۸ شرح داده خواهد شد.

برخي از برنامه ها براي صدور پيغامهاي خطا از خروجي استاندارد استفاده مي كنند ( CHKDESK يكي از آنهاست ) و برخي ديگر نيز براي صدور پيغامهاي استاندارد ، از خروجي خطاي استاندارد استفاده مي كنند ( MORE يكي از آنهاست ) به عنوان مثال اگر مسير خروجي CHEKDSK را تغيير دهيد ، فرض بر اين خواهد بود كه مي خواهيد چهت استناد بخشيدن به مدارك خود يا جاي دادن پيغامهاي خطا در انها، از پيغامها يك كپي روي كاغذ يا روي يك فايل تهيه كنيد.

هدايت خروجي به يك فايل
شايد متداول ترين كاربرد ويژگي تعيين مسير ، ذخيره سازي خروجي استاندارد يك فرمان در يك فايل مي باشد . به عنوان مثال ، با استفاده از فرمان زير مي توانيد ليست كامل دايركتوري ديسك گردان C را در فايلي بنام SAVECDIR ذخيره نماييد:
DIR C:\ /S /B > SAVECDIR
پارامتر C:\ نشانگر دايركتوري ريشه ((root است و پارامتر /S باعث مي شود تمام ساب دايركتوريهاي آن نيز در ليست مزبور آورده شوند . پارامتر /B ليست را فشرده مي كند . SAVECDIR يك فايل اسكي (ASCII) خواهد بود كه توسط فرمانهاي TYPE , EDIT و PRINT مي توان آن را ديد ، ويرايش نمود و به چاپ رساند.

جانويسي در مقايسه با الصاق
اگر مشخصه فايل مورد استفاده ، منحصر به فرد باشد ، علامتهاي > و >> يك فايل جديد تشكيل ميدهند. تفاوت بين اين دو علامت زماني مطرح مي شود كه مشخصه فايل مورد نظر با يك فايل موجود انطباق داشته باشد. در اين صورت هنگام استفاده از > بدون اينكه هيچ هشداري به نمايش درآيد ، خروجي جديد جايگزين فايل موجود مي گردد در حاليكه در صورت استفاده از >> خروجي جديد به انتهاي فايل موجود الصاق مي گردد.

علامت > خروجي جديد را بدون هيچ هشداري جايگزين فايل موجود ميسازد. جهت حفظ امنيت بيشتر ، تا وقتي كه عمدا نمي خواهيد اطلاعاتي را جايگزين يك فايل موجود نماييد ، از >> استفاده كنيد. در فصل ۴ نحوه تست وجود فايل و صدور فرمانها بر اساس آن ، شرح داده مي شود.
فرض كنيم كه مي خواهيد يك فايل دسته اي بنويسيد كه فايلي بنام SAVECDIR حاوي ليست كامل دايركتوريهاي ديسك گردانهاي C تا E را ايجاد كند. همچنين مد نظر داريد كه اين ليست جايگزين نگارش قبلي فايل SAVECDIR گردد . فايل دسته اي مزبور مي تواند محتويات ذيل را دربرداشته باشد:

DIR C:\ /S /B > SAVECDIR
DIR D:\ /S /B >> SAVECDIR
DIR E:\ /S /B >> SAVECDIR
اولين فرمان DIR با استفاده از > روي نگارشهاي قبلي فايل SAVECDIR مي نويسد . اما دو فرمان بعدي ، جهت الصاق خروجي خود به فايل تازه ايجاد شده ، بايد از >> استفاده كنند.

تعيين مسير ورودي / خروجي ابزارها
با استفاده از نامهاي مذكور در جدول ۲ ـ ۳ ، مي توانيد ورودي / خروجي استاندارد رابه ابزارهايي هدايت نماييد . به عنوان مثال ، فرمان زير ليست كامل دايركتوري ديسك گردان C: را به چاپ ميرساند:
DIR C:\ /S /B > PRN
جدول ۲ ـ ۲ : نام ابزارها
نام شرح
LPT1 تا LPT3 چاپگرهاي خطي ( موازي ) ۱ تا ۳
PRN مثل LPT1
COM1 تا COM4 درگاههاي ارتباطات ( سريال ) ۱ تا ۴
AUX درگاه كمكي
CON كنسول كاربر : صفحه كليد براي ورودي و مونتيور براي خروجي ( مگر اينكه
توسط فرمان CTTY به نحو ديگري تعريف شده باشد)
NUL خنثي ( داده ها ناديده گرفته مي شوند )

نام ابزارهاي مذكور در جدول ۲ ـ ۲ توسط DOS رزور شده اند و در نامهايي كه ايجاد مي كنيد قابل استفاده نيستند.
LPT1 يا PRN چاپگر موازي استاندارد را مشخص مي كند كه DOS بطور اتوماتيك تمام خروجيهاي چاپي را به آن هدايت مي كند ، مگر اين كه غير از اين مشخص شده باشد . اين چاپگر ، چاپگر پيش گزيده فرمان PRINT و كليد Printscreen است .
در فصل ۲۰ نحوه هدايت داده هاي ارسال شده براي چاپگر موازي به ابزارهاي ديگر شرح داده مي شود.

برخي ناسازگاريهاي چاپگرها
چاپگرهاي PostScript به ابزارهاي ويژه اي نياز دارند و DOS قادر به چاپ در حالت معمولي آنها نيست . اما بيشتر اين چاپگر ها را ميتوان به نحوي تنظيم نمود تا يك چاپگر موازي استاندارد ( مانند اپسون MX80 ) جلوه بدهد كه DOS بتواند از آن استفاده كند.

NUL: مسيري بدون مقصد
گاهي اوقات استفاده از ابزار NUL به منظور حذف خروجي يك فرمان ممكن است سودمند باشد ، زيرا خروجي هدايت شده به NUL ناپديد مي گردد. به عنوان مثال ، فرمان زير فقط در صوت يافته نشدن فايل ، پيغامي را به نمايش در مي آورد :
DIR CASEY. TXT > NUL
استفاده از چنين تكنيكهايي در ماكروي DOSKEY يا فايلهاي دسته اي جهت حذف پيغامهايي كه يك كاربر بي تجربه آمادگي مواجه شدن با آنها را ندارد ، سودمند مي باشد .

تعيين مسير ورودي
علامت < به DOS مي گويد كه مسير ورودي را به فايل يا ابزار خاصي تغيير دهد. به عنوان مثال ، براي خواندن ورودي از COM1 ( به جاي صفحه كليد ) ميتوانيد فرمان زيرا را وارد كنيد :
SORT < COM1
يكي از اهداف تغيير مسير وروديها ، اتوماتيك ساختن فرمانها به نحوي است كه نياز كمتري به ورودي كاربر داشته باشند . به عنوان مثال اگر فايل C:\DOS\CR حاوي يك خط خالي ( كه با فشردن كليد ENTER ايجادشده ) باشد ، با استفاده از آن ميتوان فرمان TIME را به شكل اتوماتيك درآورد :

TIME < C:\DOS\CR
بدين ترتيب وقتي DOS ورودي استانداردي بخواهد ، به جاي صفحه كليد از فايل CR مي خواند . در نتيجه پس از به نمايش درآمد ساعت فعلي ، كار TIME به پايان رسيده و همان ساعت حفظ مي شود . به همين ترتيب با استفاده از CR مي توانيد فرمانهاي DATE و PRINT را به شكل اتوماتيكي درآوريد . در صورت استفاده از CR به همراه PRINT تابع چاپ به روي ابزار چاپ پيش گزيده (PRN) تنظيم مي شود.
در فايلهاي دسته اي ، اغلب مشخص كردن نام مسير كامل در عمليات تعيين مسير از اهميت زيادي برخوردار است تا از هر ديسك گردان و دايركتوري بتوان آنها را اجرا نمود.

اتوماتيك ساختن فرمان ساده اي چون TIME يا DATE ممكن است به ظاهر دردسرش بيشتر از منفعتش باشد، اما باعث مي شود كه در اجراي فايلهاي دسته اي و ماكروهاي DOSKEY نياز كمتري به دخالت كاربر باشد . با حفظ دقت بيشتر ، مي توانيد فرمانهاي پيچيده تري كه به يك سري ورودي از صفحه كليد نياز دارند را به شكل اتوماتيك درآوريد . به عنوان مثال ، عمليات استاندارد FORMAT به سه ورودي نياز دارد ( البته اگر از سوئيچ /V استفاده نكنيد ) كه در مثال زير در كروشه اي مشخص شده اند :
C:\FORMAT A:
Insert new diskett for drive A:
And press ENTER when ready …[Enter]
Checking existing disk format.
Saving UNFORMAT information.
Verifying 1.44M
Format Complete.
Volumelabel ( 11 characters . ENTER for none ) ? [Enter]
1457664 bytes total disk space
1457664 bytes available on disk
512 bytation units available on disk.
2847 allocation units available on disk
volume Serial Number is 1035 – ۰DE3
Format another (Y/N) ? [n]
C:\>

با ايجاد يك فايل ورودي حاوي دو برگشت خطي (carriage return) و يك N . مي توانيد كل روند فوق را به شكل اتوماتيك به انجام رسانيد. به عنوان مثال ، اگر فايل FMTIN حاوي پاسخهاي فرمان FORMAT باشد ، فرمان اتوماتيك شده را ميتوانيد بدين شكل اجرا نماييد:
FORMAT A:<C:\DOS\FMTIN
بدين ترتيب ، هر وقت DOS ورودي را از صفحه كليد بخواهد ، يك خط از اين فايل را به ترتيب مي خواند .
اتوماتيك كردن فرمانهايي مانند FORMAT باعث ناديده گرفتن جنبه هاي امنيتي مي شود . بنابراين بايد اين تكنيكها را با احتياط كافي استفاده نماييد و آنها را در اختيار كاربران بي تجربه قرار ندهيد . همچنين اگر وضعيت خطايي پيش بيايد كه به پاسخ غير معمولي نياز داشته باشد ، برنامه احتمالا متوقف مي شود تا ورودي مناسبي را از فايل ديسك دريافت كند . در اين حالت ، با فشردن كليدهاي Ctrl – Break مي توان به اعلان فرمان برگشت .

لوله كشي
در عمليات لوله كشي (Piping) داده ها از يك فرمان و با استفاده از يك فايل موقتي بنام لوله (pipe) به فرمان بعدي ارائه داده مي شوند. خروجي استاندارد فرمان اول ، ورودي استاندارد فرمان دوم مي شود. ويژگي لوله كشي بيشتر در فيلترهاي DOS مورد استفاده قرار ميگيرد و در بخش بعدي كه به توضيح فيلترها مي پردازيم ، مثالهاي متعددي از لوله كشي را ملاحظه خواهيد نمود.

قبلا نحوه اتوماتيك كردن فرمان TIME يا DATE با استفاده از يك فايل ورودي استاندارد حاوي برگشت خطي (Carriage return) را فرا گرفتيد . اين عمل را با استفاده از ويژگي لوله كشي نيز مي توانيد انجام دهيد :
TYPE C:\DOS\CR | TIME
فرمان TYPE محتويات فايل CR را به لوله فرستاده و فرمان TIME آن را از لوله مي خواند . بنابراين پس از اجراي TIME گويي كليد Enter بطور اتوماتيك فشرده مي شود.
لوله كشي نيز مانند اشكال ديگر تعيين مسير ، فقط روي ورودي / خروجي استاندارد اثر دارد.

استفاده از ECHO براي اتوماتيك كردن فرمانها
در عمليات لوله كشي ، روش مناسب تر انتقال يك مقدار به فرمان مورد نظر ، استفاده از فرمان ECHO به جاي TYPE مي باشد . بدين ترتيب نيازي به تشكيل يك فايل پاسخ نمي باشد. به عنوان مثال ، براي ارسال يك Y به فرمان *.* DEL ( در پاسخ به سئوال Are you sure?) مي توان فرمان زير را وارد نمود:
ECHO Y | DEL *.*
اگر به دنبال فرمان ECHO بدون هيچ فاصله اي يك نقطه تايپ شود ، برگشت خطي (carriage return) ايجاد مي گردد كه ميتوان آن را جهت اتوماتيك كردن فرمانهاي TIME و DATE به كار برد. بدين ترتيب روش ديگر اتوماتيك كردن TIME بدين شكل است :
ECHO . | TIME

اين روش ، ساده ترين روش اتوماتيك كردن فرمانهايي است كه به يك پاسخ نياز دارند . اما چون ECHO فقط ميتواند يك مقدار را ارائه بدهد، براي فرمانهايي كه به چند ورودي نياز دارند ( مانند FORMAT ) قابل استفاده نمي باشد.
فايلهاي موقتي در روند لوله كشي
DOS در روند لوله كشي بايد دو فايل موقتي به نامهاي ABOABOBH و ABOABOBN تشكيل دهد. پس از اتمام عمليات اين فرمان يا پس از متوقف نمودن آن توسط كليدهاي ctrl – Break اين فايلهاي موقتي به طور اتوماتيك پاك مي شوند. اما اگر حين انجام عمليات ، كامپيوتر را ريست و يا خاموش كنيد ، اين فايلها روي ديسك سخت باقي مي مانند كه البته به سادگي ميتوانيد آنها را پاك كنيد.

DOS فايلهاي موقتي را در دايركتوري فعلي مي نويسد ، مگر اين كه با وارد كردن فرماني مانند مثال زير، يك دايركتوري موقتي استانداردي را مشخص نموده باشيد:
SET TEMP = path
اگر به دليل پر بودن ديسك ، DOS نتواند فايلهاي موقتي را روي آن بنويسد ، عمليات لوله كشي صورت نمي گيرد .

فيلترهاي DOS
از سه يوتيليتي DOS به عنوان فيلتر (filter) نام برده مي شود يعني برنامه اي كه داده هايي را از ابزار ورودي استاندار خوانده ، آنها را به نحوي پردازش كرده و سپس در ابزار خروجي استاندارد مينويسد. سه فيلتر DOS عبارتند از : MORE كه خروجي استاندارد را به شكل صفحه به صفحه نمايش ميدهد SORT خطوط را مرتب مي كند و FIND كه خطوط جاري رشته هاي متني خاصي را مي يابد.

شناسايي خطوط
سه فيلتر مزبور روي خطوط داده ها كه توسط برگشتهاي خطي (carriage return) متمايز شده اند، عمل مي كنند . در يك فايل اسكي مانند فايلهاي دسته اي يا CONFIG>SYS خطوط مشخص هستند. اما بسياري از واژه پردازها فقط وقتي برگشت خطي را ذخيره مي كنند كه در انتهاي پاراگراف ، كليد Enter را فشار دهيد. گر چه اين واژه پردازها ، پاراگرافها را در چند خط به نمايش درآورده و چاپ مي كنند، اما DOS هر يك از اين پاراگرافها را به عنوان يك خط مي شناسد . تنها استثنا زماني است كه واژه برداز مزبور ، فايل متني را به جاي فرمت معمولي خود با فرمت اسكي ذخيره كند. بنابراين هنگام به كارگيري فيلترهاي DOS براي فايلهاي ايجاد شده توسط واژه پردازها حتما بايد از فمرت فايل ذخيره شده اطلاع داشته باشيد.