خروجی را از خط فرمان ویندوز به یک فایل متنی هدایت کنید
یکی از مفیدترین راهها برای ثبت و عیبیابی رفتار دستورات یا کارهای دستهای که در ویندوز(Windows) اجرا میکنید ، تغییر مسیر خروجی به یک فایل است.
با این حال، چند راه مختلف وجود دارد که می توانید نوشته های خط فرمان را به یک فایل هدایت کنید. گزینه ای که انتخاب می کنید بستگی به نحوه مشاهده خروجی فرمان خود دارد.
نحوه عملکرد خروجی خط فرمان ویندوز(How Windows Command Prompt Output Works)
هنگامی که فرمانی را در کنسول ویندوز تایپ می کنید ( (Windows)خط فرمان(command prompt) )، خروجی آن دستور به دو جریان جداگانه می رود.
- STDOUT : خروجی(Out) استاندارد جایی است که هر پاسخ استاندارد از دستورات به آن میرسد. برای مثال، پاسخ استاندارد برای دستور DIR ، فهرستی از فایلهای داخل یک فهرست است.
- STDERR : خطای استاندارد(Standard Error) جایی است که هر پیام خطایی در صورت بروز مشکل در دستور ارسال می شود. به عنوان مثال، اگر هیچ فایلی در دایرکتوری وجود نداشته باشد، دستور DIR " File Not Found" را به جریان خطای استاندارد(Standard Error) خروجی می دهد.
شما می توانید خروجی را به یک فایل در ویندوز(Windows) برای هر دوی این جریان های خروجی هدایت کنید.
خروجی استاندارد را به فایل جدید هدایت کنید(Redirect Standard Output Write to New File)
دو روش وجود دارد که می توانید خروجی استاندارد یک دستور را به یک فایل هدایت کنید. اولین مورد این است که هر بار که دستور را اجرا می کنید، خروجی دستور نوشتن را به یک فایل جدید ارسال کنید.
برای انجام این کار، خط فرمان را باز کرده و تایپ کنید:
dir test.exe > myoutput.txt
کاراکتر > به کنسول میگوید که STDOUT را به فایلی با نامی که شما ارائه کردهاید، خروجی دهد.
هنگامی که این دستور را اجرا(run this command) می کنید ، متوجه خواهید شد که هیچ پاسخی در پنجره فرمان وجود ندارد به جز خطای عدم وجود فایل.
دلیلش این است که خروجی استاندارد دستور به فایلی به نام myoutput.txt هدایت شد. فایل اکنون در همان دایرکتوری که دستور را اجرا کرده اید وجود دارد. خروجی خطای استاندارد همچنان مانند حالت عادی نمایش داده می شود.
توجه(Note) : قبل از اجرای دستور مراقب باشید که دایرکتوری فعال(change the active directory) خط فرمان را تغییر دهید. به این ترتیب میدانید که فایلهای خروجی در کجا ذخیره میشوند.
شما می توانید خروجی استانداردی را که به فایل رفته است را با تایپ "myoutput.txt" در پنجره فرمان مشاهده کنید. با این کار فایل متنی در نمایشگر فایل متنی پیش فرض شما باز می شود. برای اکثر افراد، این معمولاً Notepad.exe است.
دفعه بعد که همان دستور را اجرا می کنید، فایل خروجی قبلی حذف می شود. یک فایل خروجی جدید با خروجی آخرین دستور دوباره ایجاد خواهد شد.
تغییر مسیر خروجی استاندارد روی (Standard Output)همان فایل(Same File) می نویسد
اگر نمی خواهید همان فایل را بازنویسی کنید چه؟ گزینه دیگر استفاده از >> به جای > برای تغییر مسیر به یک فایل خروجی است. در مورد این مثال، شما باید تایپ کنید:
dir test.exe >> myoutput.txt
همان خروجی را خواهید دید (فقط خطا).
اما در این حالت به جای بازنویسی فایل خروجی، این دستور خروجی جدید را به فایل خروجی موجود اضافه می کند.
هر بار که دستوری را اجرا می کنید و خروجی را به فایلی اضافه می کنید، خروجی استاندارد جدید را در انتهای فایل موجود می نویسد.
خطای استاندارد را به یک فایل هدایت کنید(Redirect Standard Error To a File)
به همان روشی که می توانید خروجی استاندارد را به یک فایل هدایت کنید، می توانید جریان خطای استاندارد را نیز به یک فایل خروجی دهید.
برای انجام این کار، باید 2> را به انتهای دستور اضافه کنید و سپس فایل خطای خروجی را که می خواهید ایجاد کنید، اضافه کنید.
در این مثال، دستور زیر را تایپ می کنید:
dir test.exe > myoutput.txt 2> output.err
این جریان خروجی استاندارد را به myoutput.txt و جریان خطای استاندارد را به output.err می فرستد. نتیجه این است که هیچ جریان خروجی به هیچ وجه در پنجره کنسول نمایش داده نمی شود.
با این حال، می توانید پیام های خطا را با تایپ output.err مشاهده(output.err) کنید . با این کار فایل در نمایشگر فایل متنی پیش فرض شما باز می شود.
همانطور که می بینید، هر پیام خطایی از دستور به فایل خطا خروجی می شود. درست(Just) مانند خروجی استاندارد، می توانید به جای آن از >> برای اضافه کردن خطا به خطاهای دستورات قبلی استفاده کنید.
همه نوشته های خروجی را به یک فایل هدایت کنید(Redirect All Output Writes to a Same File)
تمام رویکردهای بالا منجر به چندین فایل می شود. یک فایل برای جریان خروجی استاندارد و دیگری برای جریان خطای استاندارد است.
اگر می خواهید هر دوی این خروجی ها را در یک فایل قرار دهید، می توانید این کار را نیز انجام دهید. برای انجام این کار، فقط باید تمام خروجی ها را با استفاده از دستور زیر به همان فایل هدایت کنید.
dir test.exe 1> myoutput.txt 2>&1
در اینجا نحوه عملکرد این دستور آمده است:
- خروجی استاندارد به فایل خروجی مشخص شده با خروجی شماره 1 هدایت می شود.
- خروجی خطای استاندارد شناسایی شده با شماره 2 به فایل خروجی شناسایی شده توسط شماره 1 هدایت می شود.
این خروجی خطا را به انتهای خروجی استاندارد اضافه می کند.
این یک راه مفید برای مشاهده تمام خروجی هر دستور در یک فایل است.
خاموش کردن جریان های خروجی استاندارد یا خطا(Silencing Standard or Error Output Streams)
همچنین می توانید خروجی(Standard Output) استاندارد یا خطای استاندارد(Standard Error) را با هدایت کردن خروجی به NUL به جای فایل خاموش کنید.
با استفاده از مثال بالا، اگر فقط خروجی استاندارد(Standard Output) می خواهید و اصلاً خطای استاندارد(Standard Error) وجود ندارد ، می توانید از دستور زیر استفاده کنید:
dir test.exe 1> myoutput.txt 2>nul
این منجر به همان فایل خروجی مانند مثال اول بالا می شود که در آن شما فقط خروجی استاندارد(Standard Output) را تغییر مسیر دادید ، اما با این دستور خطا در داخل کنسول تکرار نمی شود. فایل لاگ خطا نیز ایجاد نمی کند.
اگر به هیچ خطایی اهمیت نمیدهید و نمیخواهید آنها مزاحم شوند، مفید است.
شما می توانید هر یک از دستورات خروجی مشابه بالا را از داخل یک فایل BAT(inside a BAT file) انجام دهید و خروجی آن خط به فایل خروجی که مشخص کرده اید می رود. این یک روش مفید برای مشاهده اینکه آیا دستورات موجود در یک فایل BAT هنگام اجرا شدن دارای خطا هستند یا خیر.
Related posts
فهرستی از فرآیندهای در حال اجرا را در یک فایل متنی در ویندوز ذخیره کنید
نحوه استفاده از دستور Taskkill در ویندوز 10/11
نحوه حذف متن از آیکون های نوار وظیفه ویندوز
از دسترسی به Command Prompt در ویندوز جلوگیری کنید
برچسب های متنی را از نمادهای دسکتاپ در ویندوز 7/8/10 حذف کنید
نحوه غیرفعال کردن کلید ویندوز
چگونه به استفاده از FINDSTR and Select-String Commands در Windows 11/10
از Netstat برای مشاهده پورت های گوش دادن و PID در ویندوز استفاده کنید
فهرست DISKPART دستورات و نحوه استفاده از آنها در Windows 11/10
IE را در ویندوز 7 حذف و دوباره نصب کنید
ChkDsk Command Line Options، Switches، Parameters در Windows 10
نحوه باز کردن فایل های 7Z در ویندوز، مک و لینوکس
کد HTML برای قرار دادن متن در اطراف تصویر
چگونه برای باز کردن Microsoft Store apps از Command Prompt
چگونه بدون دست زدن به ماوس کامپیوتر ویندوزی خود را بیدار نگه دارید
نحوه رفع مشکل «نام فایل خیلی طولانی است» در ویندوز
چگونه برای کشتن یک فرآیند با استفاده از Command Line در Windows 10
صادرات، پاک کردن، و افزایش اندازه برای گزارش رویدادها در ویندوز
نقد و بررسی کتاب - راهنمای گیک برای ویندوز 8
نحوه استفاده از خط فرمان Tabbed در ویندوز 10