مقدمه
هر چه فرمان های DOS را بهتر بفهمید ، در سیستم خود ( چه اعلان فرمان و چه شل ) کارایی بیشتری خواهید داشت . فرمانهای بهتر ، فرمان های قوی تری هستند که به نوبه خود برنامه های دسته ای قویتر و امکانات بیشتری را در اختیار شما قرار میدهند.
تعیین مسیر ورودی و خروجی
بیشتر یوتیلیتی های DOS ورودی را از صفحه کلید دریافت کرده و خروجی را به شکل پیغامهایی به صفحه نمایش ارسال می کنند . فرمان TIME مثال خوبی در این مورد می باشد:
ورودی و خروجی استاندارد
بسیاری از یوتیلیتی های DOS خدمات ورودی / خروجی استاندارد را طلب می کنند . به منظور انجام عملیات ورودی / خروجی استاندارد ، DOS از ابزاری بنام CON ( مخفف Console) برای خواندن و نوشتن استفاده می کنند که معمولابرای صفحه کلید و مونیتور تعریف می شود. اما این امکان نیز وجود دارد که با استفاده از علامتهای جدول 1 2 ورودی / خروجی را از CON به فایلها یا ابزارهای دیگر هدایت نمایید.
جدول 1 2 : علامتهای قابل استفاده در تعیین مسیر
علامت شرح
< souece ورودی را از یک فایل یا ابزار خاص دریافت می کند.
> destination خروجی را به یک فایل یا ابزار خاص هدایت میکند . در این حالت اطلاعات
خروجی روی اطلاعات فایل موجود نوشته می شود.
>> destination خروجی را به یک فایل یا ابزار خاص هدایت می کند . در این حالت اطلاعات
خروجی به اطلاعات موجود در فایل اضافه می شود
command 1 \ command 2 خروجی فرمان command 1 ورودی فرمان command 2 می شود.
علامتهای مذکور در جدول 1 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 – 78 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 – 78E4
Directory of c:\
این امر ممکن است همیشه جالب توجه نباشد ، اما دانستن آن باعث افزایش توانایی شما در استفاده از فرمانها می باشد . به عنوان مثال ، می توانید یک ماکرو DOSKEY بنویسید که وجود یا عدم وجود فایلی را به شما اطلاع دهد:
DOSKEY ISFILE = DIR $1 $G NUL
فرمان فوق ، ماکرویی بنام ISFILE تعریف می کند که به دنبال مشخصه فایل مورد نظر گشته و خروجی استاندارد را به NUL ( خنثی ) هدایت می کند . تنها پیغام File not found به نمایش در خواهد آمد.
با تعریف مجدد CON توسط فرمان CTTY میتوانید مسیر تمام ورودیهای صفحه کلید و خروجیهای صفحه نمایش را تغییر دهید. این تکنیک در فصل 18 شرح داده خواهد شد.
برخی از برنامه ها برای صدور پیغامهای خطا از خروجی استاندارد استفاده می کنند ( CHKDESK یکی از آنهاست ) و برخی دیگر نیز برای صدور پیغامهای استاندارد ، از خروجی خطای استاندارد استفاده می کنند ( MORE یکی از آنهاست ) به عنوان مثال اگر مسیر خروجی CHEKDSK را تغییر دهید ، فرض بر این خواهد بود که می خواهید چهت استناد بخشیدن به مدارک خود یا جای دادن پیغامهای خطا در انها، از پیغامها یک کپی روی کاغذ یا روی یک فایل تهیه کنید.
هدایت خروجی به یک فایل
شاید متداول ترین کاربرد ویژگی تعیین مسیر ، ذخیره سازی خروجی استاندارد یک فرمان در یک فایل می باشد . به عنوان مثال ، با استفاده از فرمان زیر می توانید لیست کامل دایرکتوری دیسک گردان C را در فایلی بنام SAVECDIR ذخیره نمایید:
DIR C:\ /S /B > SAVECDIR
پارامتر C:\ نشانگر دایرکتوری ریشه ((root است و پارامتر /S باعث می شود تمام ساب دایرکتوریهای آن نیز در لیست مزبور آورده شوند . پارامتر /B لیست را فشرده می کند . SAVECDIR یک فایل اسکی (ASCII) خواهد بود که توسط فرمانهای TYPE , EDIT و PRINT می توان آن را دید ، ویرایش نمود و به چاپ رساند.
جانویسی در مقایسه با الصاق
اگر مشخصه فایل مورد استفاده ، منحصر به فرد باشد ، علامتهای > و >> یک فایل جدید تشکیل میدهند. تفاوت بین این دو علامت زمانی مطرح می شود که مشخصه فایل مورد نظر با یک فایل موجود انطباق داشته باشد. در این صورت هنگام استفاده از > بدون اینکه هیچ هشداری به نمایش درآید ، خروجی جدید جایگزین فایل موجود می گردد در حالیکه در صورت استفاده از >> خروجی جدید به انتهای فایل موجود الصاق می گردد.
علامت > خروجی جدید را بدون هیچ هشداری جایگزین فایل موجود میسازد. جهت حفظ امنیت بیشتر ، تا وقتی که عمدا نمی خواهید اطلاعاتی را جایگزین یک فایل موجود نمایید ، از >> استفاده کنید. در فصل 4 نحوه تست وجود فایل و صدور فرمانها بر اساس آن ، شرح داده می شود.
فرض کنیم که می خواهید یک فایل دسته ای بنویسید که فایلی بنام SAVECDIR حاوی لیست کامل دایرکتوریهای دیسک گردانهای C تا E را ایجاد کند. همچنین مد نظر دارید که این لیست جایگزین نگارش قبلی فایل SAVECDIR گردد . فایل دسته ای مزبور می تواند محتویات ذیل را دربرداشته باشد:
DIR C:\ /S /B > SAVECDIR
DIR D:\ /S /B >> SAVECDIR
DIR E:\ /S /B >> SAVECDIR
اولین فرمان DIR با استفاده از > روی نگارشهای قبلی فایل SAVECDIR می نویسد . اما دو فرمان بعدی ، جهت الصاق خروجی خود به فایل تازه ایجاد شده ، باید از >> استفاده کنند.
تعیین مسیر ورودی / خروجی ابزارها
با استفاده از نامهای مذکور در جدول 2 3 ، می توانید ورودی / خروجی استاندارد رابه ابزارهایی هدایت نمایید . به عنوان مثال ، فرمان زیر لیست کامل دایرکتوری دیسک گردان C: را به چاپ میرساند:
DIR C:\ /S /B > PRN
جدول 2 2 : نام ابزارها
نام شرح
LPT1 تا LPT3 چاپگرهای خطی ( موازی ) 1 تا 3
PRN مثل LPT1
COM1 تا COM4 درگاههای ارتباطات ( سریال ) 1 تا 4
AUX درگاه کمکی
CON کنسول کاربر : صفحه کلید برای ورودی و مونتیور برای خروجی ( مگر اینکه
توسط فرمان CTTY به نحو دیگری تعریف شده باشد)
NUL خنثی ( داده ها نادیده گرفته می شوند )
نام ابزارهای مذکور در جدول 2 2 توسط DOS رزور شده اند و در نامهایی که ایجاد می کنید قابل استفاده نیستند.
LPT1 یا PRN چاپگر موازی استاندارد را مشخص می کند که DOS بطور اتوماتیک تمام خروجیهای چاپی را به آن هدایت می کند ، مگر این که غیر از این مشخص شده باشد . این چاپگر ، چاپگر پیش گزیده فرمان PRINT و کلید Printscreen است .
در فصل 20 نحوه هدایت داده های ارسال شده برای چاپگر موازی به ابزارهای دیگر شرح داده می شود.
برخی ناسازگاریهای چاپگر ها
چاپگرهای PostScript به ابزارهای ویژه ای نیاز دارند و DOS قادر به چاپ در حالت معمولی آنها نیست . اما بیشتر این چاپگر ها را میتوان به نحوی تنظیم نمود تا یک چاپگر موازی استاندارد ( مانند اپسون MX80 ) جلوه بدهد که DOS بتواند از آن استفاده کند.
NUL: مسیری بدون مقصد
گاهی اوقات استفاده از ابزار NUL به منظور حذف خروجی یک فرمان ممکن است سودمند باشد ، زیرا خروجی هدایت شده به NUL ناپدید می گردد. به عنوان مثال ، فرمان زیر فقط در صوت یافته نشدن فایل ، پیغامی را به نمایش در می آورد :
DIR CASEY. TXT > NUL
استفاده از چنین تکنیکهایی در ماکروی DOSKEY یا فایلهای دسته ای جهت حذف پیغامهایی که یک کاربر بی تجربه آمادگی مواجه شدن با آنها را ندارد ، سودمند می باشد .