• اصول اولیه فایل های BAT استفاده از متغیرهای محیطی در خط فرمان

    فایل های (فرمان) به شما امکان می دهد بدون تعیین مسیرهای مطلق به دایرکتوری ها این کار را انجام دهید. به عنوان مثال، اگر از قبل حرف درایو سیستم را نمی دانیم، همیشه می توانیم از متغیر استفاده کنیم %systemdrive%، که حرف درایوی که سیستم عامل روی آن نصب شده است را برمی گرداند. همچنین، از متغیرها برای بهینه سازی کد استفاده می شود - پارامتری که بارها تکرار می شود (به عنوان مثال، یک کلید رجیستری) می تواند یک متغیر کوتاه اختصاص داده و استفاده شود. این مقاله به جزئیات تکنیک های مختلف کار با متغیرها و همچنین نحوه تغییر و ایجاد متغیرهای جدید می پردازد. حالا در مورد همه چیز به ترتیب.

    طبقه بندی متغیرهای محیطی
    Windows Help بین دو نوع متغیر محیطی متمایز می کند: سیستم و محلی. متغیرهای سیستم مقادیر یکسانی را برای همه کاربران برمی گرداند. به عنوان مثال، %systemdrive%- حرف درایو سیستم و برای همه کاربران یکسان است. با این حال، مقادیر بازگردانده شده توسط متغیرهای محلی بسته به کاربر وارد شده متفاوت است. مثلا، ٪مشخصات کاربر٪ممکن است C:\Documents and Settings\CurrentUser را برگرداند، جایی که CurrentUser نام حساب کاربری است.

    برای اینکه بفهمید کدام متغیرهای محیطی در سیستم عامل در دسترس شما هستند و در حال حاضر چه مقادیری به آنها اختصاص داده شده است، دستور به شما کمک می کند. تنظیم، از خط فرمان بدون پارامتر راه اندازی شد ( start - run - cmd - set). در چارچوب این مقاله، ما به متغیرهایی علاقه مندیم که مسیر پوشه های مختلف (دایرکتوری ها) را نشان می دهند. کمی بیشتر در مورد برخی از آنها در زیر:

    متغیر|نوع|توضیحات
    %SYSTEMDRIVE%|System|نام درایو حاوی دایرکتوری ریشه سیستم عامل Windows XP /2003 (یعنی دایرکتوری ریشه سیستم) را برمی گرداند.
    %SYSTEMROOT%, %WINDIR%|System|محل دایرکتوری ریشه سیستم عامل Windows /2003 را برمی گرداند.
    %PATH%|System|مسیر جستجوی فایل های اجرایی را مشخص می کند.
    %PROGRAMFILES%|System|مسیر دایرکتوری نصب برنامه (Program Files) را نشان می دهد.
    %COMMONPROGRAMFILES%|System|مسیر دایرکتوری برنامه مشترک (Program Files\Common Files) را نشان می دهد.
    %TEMP% و %TMP%|System and User|پوشه‌های موقت پیش‌فرض استفاده شده توسط برنامه‌هایی را که توسط کاربران وارد شده در دسترس هستند را برمی‌گرداند. برخی از برنامه ها به متغیر TEMP نیاز دارند، برخی دیگر به متغیر TMP نیاز دارند.
    %USERPROFILE%|محلی|محل نمایه کاربر فعلی را برمی‌گرداند.
    %ALLUSERSPROFILE%|محلی|محل نمایه "همه کاربران" را برمی‌گرداند.
    %CD%|Local|مسیر را به پوشه فعلی برمی‌گرداند.
    %APPDATA%|محلی|محل پیش‌فرض داده‌های برنامه را برمی‌گرداند.

    استفاده از متغیرها در فایل های دسته ای
    بیایید با یک مثال ساده شروع کنیم:

    CMD/BATCH:

    DEL /F /Q "%AllUsersProfile%\Start Menu\Windows Activation.lnk" DEL /F /Q "%AllUsersProfile%\Start Menu\WindowsUpdate.lnk" DEL /F /Q "%systemroot%\system32\*.scr "

    در این مثال، من میانبرهای بالا را با استفاده از متغیر از منوی شروع حذف می کنم %AllUsersProfile%و همچنین تمامی فایل های دارای پسوند SCR از پوشه Windows\system32 با استفاده از متغیر %SystemRoot%. همانطور که می دانید، به جای DEL / F / Q، هر چیزی می تواند وجود داشته باشد: از دستور کپی COPY گرفته تا دستور راه اندازی نصب برنامه مورد نیاز ما با تمام پارامترهای خط فرمان، در صورت لزوم.

    در تمام دستورات، من به طور خاص از "نقل قول" استفاده کردم - این تصادفی نیست. اگر از مسیرهای حاوی فاصله استفاده می کنید، کل مسیر، از جمله متغیرها، باید در علامت نقل قول قرار گیرد. حتی اگر خود متغیر حاوی نقل قول نباشد، ممکن است پس از تجزیه توسط سیستم، فاصله‌هایی در مسیر ظاهر شود (به عنوان مثال، ٪فایلهای برنامه٪در C:\Program Files). در هر صورت، بهتر است از علامت نقل قول استفاده کنید - فرمت خوبی برای فایل های دسته ای است.

    چگونه متغیرهای خود را تنظیم کنید

    مثال بالا از متغیرهای محیطی موجود استفاده می کند. و احتمالاً متوجه نمادهای درصدی اطراف نام متغیرها شده اید. این کاراکترها برای اجازه دادن به جایگزینی مقادیر متغیر در خط فرمان یا در یک فایل دسته ای مورد نیاز هستند. نمادهای درصد نشان می‌دهند که Cmd.exe باید به مقادیر متغیرها اشاره کند، نه اینکه یک مقایسه کاراکتر به کاراکتر انجام دهد. در زیر نحوه عملکرد آن را مشاهده خواهید کرد. با دستور SET می توانید متغیرهای خود را در یک فایل دسته ای تنظیم کنید.

    دستور SET
    با استفاده از همان دستور SET می توانید متغیرهای خود را در یک فایل دسته ای تنظیم کنید.

    برای اضافه کردن یک متغیر، در خط فرمان وارد کنید:

    کد:

    variable_name=value را تنظیم کنید

    برای نمایش یک متغیر، در خط فرمان تایپ کنید:

    کد:

    متغیر_name را تنظیم کنید

    برای حذف یک متغیر، در خط فرمان وارد کنید:

    کد:

    متغیر_name= را تنظیم کنید

    مثلا،

    کد:

    mydir=D:\Files\Work را تنظیم کنید

    متغیر را تعریف می کند mydir، که مسیر را به پوشه مشخص شده برمی گرداند. شما می توانید در مورد این تیم بیشتر بخوانید تنظیم/؟.

    یادداشت مهم:متغیرهای تنظیم شده توسط دستور set فقط برای مدت زمان جلسه فرمان (به زیر مراجعه کنید) که در آن تنظیم شده اند معتبر هستند.

    این متغیرها را می توان ایجاد کرد، به عنوان مثال، برای هر مسیری، فقط باید یک الگوریتم برای اختصاص یک متغیر در هر موقعیت خاص، با استفاده از مثال های آماده یا ایجاد الگوریتم خود بر اساس آنها، تنظیم یا پیدا کنید. به عنوان یک قاعده، چنین متغیرهایی در جلسه جاری توسط فایل های دسته ای با استفاده از برخی دستورات ایجاد می شوند.

    نمونه ای از تخصیص متغیرها در یک فایل RunOnceEx.cmd، که تنظیمات را به رجیستری وارد می کند

    CMD/BATCH:

    @echo off SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx SET i=100 REG ADD %KEY% /V TITLE /D "نصب برنامه ها" /f REG ADD %KEY%\%i% /VE /D "WinRar 3.51" /f REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f REG ADD %KEY%\%i% /V 2 / D "REGEDIT /S %systemdrive%\install\Software\rar_set.reg /s" /f SET /A i+=1

    در این اسکریپت، دستور SET دو متغیر را تنظیم می کند - ٪من٪و %KEY%. لطفاً توجه داشته باشید که آنها بدون علامت درصد مشخص شده اند، اما %% از قبل برای دسترسی به آنها مورد نیاز است. متغیر %KEY%در خدمت ساده سازی و بهینه سازی کد است. در طول جلسه فرمان جاری بدون تغییر باقی می ماند، که نیاز به گنجاندن یک کلید رجیستری در کد را از بین می برد. هر بار که در کد رخ می دهد %KEY%، با HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx جایگزین خواهد شد. و اینجا ٪من٪برای شماره گذاری متوالی کلیدهای رجیستری استفاده می شود. با مقدار اولیه 100، متغیر با دستور SET /A i+=1 بعد از هر بلوک از دستورات، یک عدد افزایش می‌یابد و در نتیجه یک دنباله 100، 101، 102 و غیره ایجاد می‌شود. بنابراین خط

    کد:

    REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f

    در واقع اینگونه کار می کند

    کد:

    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100 /V 1 /D "C:\install\Software\WinRar.exe /s" /f

    توجه داشته باشید که قطعه فایل از متغیر سیستم نیز استفاده می کند %systemdrive%، که با حرف درایو سیستم مطابقت دارد.

    نمونه ای از تخصیص متغیرها در یک فایل دسته ای که یک برنامه کاربردی را از سی دی نصب می کند:

    کد:

    برای %i در (C D E F G H I J K L M N O P Q R S T U V W X Y Z) در صورت وجود %%i:\WIN51 CDROM=%%i را تنظیم کنید: start /wait "%CDROM%\INSTALL\DVDTools\NBRom\Nero.exe"

    این مثال یک فایل خاص (WIN51) را برای همه درایوهای لیست شده جستجو می کند. اگر در یکی از دیسک ها یافت شود، به دومی یک متغیر اختصاص داده می شود ٪سی دی رام٪و سپس نرم افزار با استفاده از مسیر مشخص شده توسط متغیر ایجاد شده نصب می شود.

    تغییر متغیرهای محیطی و اضافه کردن متغیرهای خود

    همانطور که در بالا ذکر شد، تأثیر متغیرهای تنظیم شده توسط دستور set محدود به جلسه دستور فعلی است. اگر می خواهید یک متغیر سیستمی یا کاربری را از یک متغیر موقت دریافت کنید، باید آن را در رجیستری ثبت کنید. این نیز می تواند به روش های مختلف انجام شود.

    ابزار setenv
    این ابزار از خط فرمان (وب سایت، دانلود) کار می کند. کار با ابزار بسیار ساده است (setenv /?).


    تنظیمات کاربر|setenv -u مقدار_نام متغیر
    تنظیمات سیستم|مقدار متغیر_name setenv -m
    تنظیمات کاربر پیش فرض|مقدار نام varname setenv -d
    تنظیمات جلسه کاربر فعلی|مقدار varname setenv -v

    به عنوان مثال، اگر در مرحله نصب باید متغیر %temp% را دریافت کنید، می توانید این کار را از cmdlines.txt انجام دهید، برای مثال:

    کد:

    :: ایجاد و تنظیم پوشه Temp... md %systemdrive%\Temp setenv -u Temp %systemdrive%\Temp setenv -u Tmp %systemdrive%\Temp

    این ابزار راحت است زیرا پس از تنظیم متغیر می توان بلافاصله از آن استفاده کرد. خوب، تقریباً بلافاصله - در جلسه بعدی تیم. برای استفاده از آن در جلسه جاری، می توانید از دستور قدیمی آشنا استفاده کنید:

    کد:

    :: ایجاد #EgOrus# مجموعه var EgOrus=D:\EgOrus setenv -u EgOrus %EgOrus%

    تنظیمات را به رجیستری وارد کنید
    اگر پس از اولین ورود به سیستم، تغییراتی در رجیستری ایجاد کنید، متغیرها تنها پس از راه اندازی مجدد یا پایان جلسه کاربر شروع به "کار" می کنند. البته در طی مراحل نصب خودکار، می توانید تنظیمات مورد نظر را روی T-12 وارد کنید (به مقاله رجیستری توییک مراجعه کنید) و این مشکل را برطرف کنید. اگر قرار نیست از متغیر اختصاص داده شده در جلسه کاربر فعلی استفاده کنید، ممکن است وارد کردن به رجیستری نیز برای شما مناسب باشد. من روند وارد کردن فایل‌های REG را دوباره توضیح نمی‌دهم، اما دستور REG ADD را با استفاده از یک مثال خاص در نظر می‌گیرم.

    فرض کنید شما علاقه مند به داشتن یک متغیر در سیستم هستید ٪سی دی رام٪به صورت دائمی و در حین نصب برنامه ها از روی سی دی نصب کنید. به دنبال کد بالا، پس از تعریف یک متغیر، آن را به متغیر سیستم اختصاص دهید.

    CMD/BATCH:

    برای %%i در (C D E F G H I J K L M N O P Q R S T U V W X Y Z) در صورت وجود %%i:\WIN51 CDROM=%%i را تنظیم کنید: REG «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager/vCDROdromment/%CDROdromment» را اضافه کنید. f

    پس از یافتن یک فایل WIN51، به درایوی که در آن یافت شد یک متغیر محلی اختصاص داده می شود ٪سی دی رام٪، که بلافاصله با وارد کردن آن به رجیستری به عنوان یک متغیر دائمی سیستم اختصاص داده می شود. این روش در یکی از موضوعات کنفرانس Oszone Sanja Alone پیشنهاد شد. در همان زمان متوجه شدید. جایی که تنظیمات متغیر سیستم در رجیستری ذخیره می شود. تنظیمات متغیر کاربر در HKCU\Environment ذخیره می شوند. مسیرهای برگردانده شده توسط متغیرهای %PROGRAMFILES% و %COMMONPROGRAMFILES% را می توان در تنظیمات ProgramFilesDir و CommonFilesDir در HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion مشاهده کرد، اما نباید در آنجا تغییر داده شود. دایرکتوری های نصب برنامه (به غیر از %SystemDrive%\Program Files) باید از طریق یک فایل پاسخ پیکربندی شوند.

    خلاصه
    پوسته فرمان ویندوز (cmd.exe) ابزار بسیار قدرتمندی برای کار با سیستم است. فایل‌های دسته‌ای می‌توانند تعداد زیادی از وظایف را خودکار کنند، به همین دلیل است که اغلب برای نصب خودکار ویندوز استفاده می‌شوند. استفاده ماهرانه از متغیرها در فایل های دسته ای به شما امکان می دهد طیف گسترده ای از مسائل را حل کنید. کار با پوسته کارآمدتر می شود و در عین حال کد فایل های دسته ای را ساده می کند. نمونه های دیگری از استفاده از متغیرها را می توانید در صفحات سایت یا انجمن پیدا کنید. تمام نمونه‌های استفاده شده در این مقاله از اسکریپت‌های شرکت‌کنندگان در انجمن OsZone.ru گرفته شده‌اند که از آن‌ها تشکر فراوان داریم.

    واژه شناسی
    پوسته فرمان
    یک محصول نرم افزاری جداگانه است که ارتباط مستقیمی بین کاربر و سیستم عامل فراهم می کند. رابط کاربری متن خط فرمان محیطی را فراهم می کند که در آن برنامه ها و ابزارهای مبتنی بر متن اجرا می شوند.

    cmd.exe- یک مفسر دستور که پوسته فرمان ویندوز از آن برای ترجمه دستور وارد شده به فرمتی قابل فهم برای سیستم استفاده می کند.

    جلسه تیممی تواند به عنوان شروع شروع شود cmd.exe، یا با اجرای یک فایل دسته ای. به عبارت دیگر، پوسته دستور فعلی ایجاد می شود. بر این اساس، خروج از این پوسته (به عنوان مثال، انتهای فایل دسته ای) به جلسه فرمان پایان می دهد.

    جلسه کاربر(جلسه کاربر) با ورود کاربر شروع می شود (ورود به سیستم) و با خروج کاربر (log off) به پایان می رسد.

    در داخل فایل های دسته ای می توانید با متغیرهای به اصطلاح محیطی (یا متغیرهای محیطی) کار کنید که هر کدام در رم ذخیره می شوند، نام منحصر به فرد خود را دارند و مقدار آن یک رشته است. زمانی که سیستم عامل بوت می شود، متغیرهای محیط استاندارد به طور خودکار مقداردهی اولیه می شوند. چنین متغیرهایی برای مثال WINDIR که مکان دایرکتوری ویندوز را مشخص می کند، TEMP که مسیر دایرکتوری ذخیره فایل های موقت ویندوز را مشخص می کند، یا PATH که مسیر سیستم (مسیر جستجو) را ذخیره می کند، یعنی یک فهرست دایرکتوری هایی که سیستم باید در آنها به دنبال فایل های اجرایی یا فایل های مشترک (مانند کتابخانه های پویا) بگردد. همچنین می توانید متغیرهای محیطی خود را در فایل های دسته ای با استفاده از دستور SET اعلام کنید.

    بدست آوردن مقدار یک متغیر

    برای بدست آوردن مقدار یک متغیر محیطی خاص، نام متغیر را در % کاراکتر قرار دهید. مثلا:

    @ECHO OFF CLS REM ایجاد متغیر MyVar SET MyVar=Hello REM تغییر متغیر SET MyVar=%MyVar%! مقدار متغیر ECHO MyVar: %MyVar% REM حذف متغیر MyVar SET MyVar= مقدار متغیر ECHO WinDir: %WinDir%

    وقتی چنین فایل دسته ای را اجرا می کنید، خط روی صفحه نمایش داده می شود

    مقدار متغیر MyVar: سلام! مقدار متغیر WinDir: C:\WINDOWS

    تبدیل های متغیر به عنوان رشته

    شما می توانید متغیرهای محیطی را در فایل های دسته ای دستکاری کنید. ابتدا می توان عملیات الحاق (چسباندن) را روی آنها انجام داد. برای انجام این کار، در دستور SET، به سادگی مقادیر متغیرهایی که باید در کنار آن متصل شوند را بنویسید. مثلا،

    SET A=یک مجموعه B=دو مجموعه C=%A%%B%

    پس از اجرای این دستورات در فایل، مقدار متغیر C، رشته "OneTwo" خواهد بود. شما نباید از علامت + برای الحاق استفاده کنید، زیرا به سادگی به عنوان یک کاراکتر درک می شود. برای مثال پس از اجرای فایل زیر

    SET A=One SET B=Two SET C=A+B ECHO Variable C=%C% SET D=%A%+%B% ECHO Variable D=%D%

    دو خط روی صفحه ظاهر می شود:

    متغیر C=A+B متغیر D=یک+دو

    در مرحله دوم، رشته های فرعی را می توان از یک متغیر محیطی با استفاده از ساختار استخراج کرد %variable_name:~n1,n2%، جایی که عدد n1 مقدار افست (تعداد کاراکترهایی که باید رد شوند) از ابتدا (اگر n1 مثبت باشد) یا از انتهای (اگر n1 منفی باشد) متغیر محیط مربوطه را مشخص می کند و عدد n2 تعداد کاراکترهایی است که به را انتخاب کنید (اگر n2 مثبت باشد) یا تعداد آخرین کاراکترهای متغیری که در زیررشته انتخابی لحاظ نمی شود (اگر n2 منفی باشد). اگر فقط یک گزینه منفی -n مشخص شده باشد، n ​​کاراکتر آخر استخراج خواهد شد. به عنوان مثال، اگر رشته "09/21/2007" در متغیر %DATE% ذخیره شود (نمایش نمادین تاریخ فعلی در تنظیمات منطقه ای خاص)، سپس پس از اجرای دستورات زیر

    SET dd1=%DATE:~0.2% SET dd2=%DATE:~0.-8% SET mm=%DATE:~-7.2% SET yyyy=%DATE:~-4%

    متغیرهای جدید مقادیر زیر را خواهند داشت: %dd1%=21، %dd2%=21، %mm%=09، %yyyy%=2007.

    ثالثاً، می‌توانید رویه جایگزینی رشته‌های فرعی را با استفاده از ساختار انجام دهید %variable_name:s1=s2%(در نتیجه یک رشته با هر وقوع زیر رشته s1 در متغیر محیط مربوطه با s2 جایگزین می شود). مثلا بعد از اجرای دستورات

    SET a=123456 SET b=%a:23=99%

    متغیر b رشته "199456" را ذخیره می کند. اگر پارامتر s2 مشخص نشده باشد، رشته فرعی s1 از رشته خروجی حذف خواهد شد. پس از اجرای دستور

    SET a=123456 SET b=%a:23=%

    متغیر b رشته "1456" را ذخیره می کند.

    عملیات با متغیرها مانند اعداد

    با فعال بودن پردازش فرمان توسعه یافته (که پیش‌فرض در ویندوز XP است)، می‌توانید مقادیر متغیرهای محیطی را به‌عنوان اعداد در نظر بگیرید و بر روی آنها حساب کنید. برای این کار از دستور SET با کلید /A استفاده کنید. در اینجا یک فایل دسته ای به عنوان مثال add.bat آورده شده است که دو عدد داده شده را به عنوان گزینه های خط فرمان اضافه می کند و مجموع حاصل را روی صفحه نمایش می دهد:

    @ECHO OFF REM متغیر M مجموع را ذخیره می‌کند SET /A M=%1+%2 ECHO مجموع %1 و %2 %M% REM است. حذف متغیر M SET M=

    تغییرات محلی در متغیرها

    هر تغییری که روی متغیرهای محیطی در یک فایل دسته‌ای با دستور SET ایجاد می‌کنید، پس از خروج آن فایل باقی می‌ماند، اما آنها فقط در پنجره دستور فعلی اعمال می‌شوند. همچنین می‌توان تغییرات متغیرهای محیطی را درون یک فایل دسته‌ای بومی‌سازی کرد، یعنی به‌طور خودکار مقادیر همه متغیرها را به حالت قبل از شروع اجرای این فایل بازیابی کرد. برای این کار از دو دستور استفاده می شود: SETLOCAL و ENDLOCAL. دستور SETLOCAL ابتدای ناحیه تنظیمات متغیر محیطی محلی را تعریف می کند. به عبارت دیگر، تغییرات محیطی که پس از اجرای SETLOCAL انجام می شود، محلی برای فایل دسته ای فعلی خواهد بود. هر دستور SETLOCAL باید یک دستور ENDLOCAL مربوطه داشته باشد تا متغیرهای محیط را به مقادیر قبلی خود بازگرداند. تغییرات محیطی که پس از دستور ENDLOCAL ایجاد شده است، دیگر محلی برای فایل دسته ای فعلی نیست. پس از اتمام اجرای این فایل، مقادیر قبلی آنها بازیابی نخواهد شد.


    0.00 (1 )

    رویکرد کلی

    فایل های دستوری فایل های متنی با پسوند هستند خفاشیا cmd، که رشته های آن دستورات یا نام فایل های اجرایی هستند. هنگامی که یک فایل دسته ای را اجرا می کنید، پردازشگر فرمان سیستم عامل (که اغلب مفسر فرمان نامیده می شود) کنترل را بر عهده می گیرد و به طور متوالی خطوط فایل دسته ای را می خواند و تفسیر می کند. برای Windows9X این کار را می کند command.com، برای WinNT/2K/XP - cmd.exe. خطوط فایل دسته ای می تواند شامل دستورات خود پردازنده فرمان (FOR، GOTO، IF، و غیره) یا نام ماژول های اجرایی (net.exe، regedit.exe، win.com و غیره) باشد. در سیستم عامل های WinNT/2K/XP، می توانید با استفاده از خط فرمان، یک مرجع مختصر در مورد ترکیب دستورات دریافت کنید:

    یا در یک دستور خاص:

    نام فرمان HELP

    برای نمایش متن راهنما نه بر روی صفحه، بلکه در یک فایل، می توانید استفاده کنید تغییر مسیر خروجی . هنگام استفاده از خط فرمان، دستگاه ورودی استاندارد صفحه کلید و دستگاه خروجی نمایشگر است، اما این دستگاه ها را می توان با استفاده از کاراکترهای تغییر مسیر مجدد نقشه برداری کرد.

    < - تغییر مسیر ورودی

    > - تغییر مسیر خروجی (یا > > - تغییر مسیر به یک فایل موجود، زمانی که داده های خروجی به انتهای فایل اضافه می شود.)

    برای خروجی جریان داده فرمانکمکدر فایل help.txt، خط فرمان به صورت زیر خواهد بود:

    HELP > help.txt

    برای نمایش راهنمایی برای دستور GOTO در فایل goto.txt:

    HELP GOTO > goto.txt

    استفاده از متغیرهای محیطی

    در فایل های دسته ای، می توانید و اغلب باید استفاده کنید متغیرهای محیطی - متغیرهایی که مقادیر آنها محیطی را که دستور یا فایل دسته ای در آن اجرا می شود مشخص می کند. مقادیر متغیرهای محیطی هنگام بوت شدن سیستم عامل و ثبت نام کاربر در سیستم تشکیل می شود و همچنین می توان با استفاده از دستور تنظیم کرد.تنظیم، که فرمت آن است:

    تنظیم [متغیر=[رشته]]

    متغیرنام متغیر محیطی

    خطرشته ای از کاراکترها برای تخصیص به متغیر مشخص شده.

    به عنوان مثال، خط فرمان

    SET mynane=Vasya

    متغیر myname را با مقدار Vasya اضافه می کند.

    شما می توانید مقدار یک متغیر را در برنامه ها و فایل های دسته ای با استفاده از نام آن که در علامت های درصد محصور شده است، دریافت کنید. %) . به عنوان مثال دستور

    کلمه time و فرمان را نمایش می دهد

    مقدار متغیر زمان را نمایش می دهد که مقدار زمان فعلی را می گیرد.

    و خط فرمان

    SET PATH=C:myprog;%path%

    به مسیر جستجوی برنامه های اجرایی که با مقدار متغیر PATH توصیف شده است، دایرکتوری C: myprog را اضافه می کند.

    اجرای دستور SET بدون پارامتر باعث می شود که مقادیر فعلی متغیرها به شکل زیر بر روی صفحه نمایش داده شود:

    NUMBER_OF_PROCESSORS=1 - تعداد پردازنده

    OS=Windows_NT- نوع سیستم عامل

    Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - مسیر جستجو برای فایل های اجرایی.

    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;..VBE;.JS;.JSE;..WSF;..WSH - پسوندهای فایل های اجرایی.

    PROCESSOR_ARCHITECTURE=x86 - معماری پردازنده.

    PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Step 1, AuthenticAMD - Processor ID.

    PROCESSOR_LEVEL=6 - سطح پردازنده (شماره مدل).

    PROCESSOR_REVISION=0801 - نسخه پردازنده.

    ProgramFiles=E:Program Files - مسیری به پوشه "Program Files".

    PROMPT=$P$G - فرمت خط فرمان $P - مسیر دایرکتوری فعلی $G - علامت ">".

    SystemDrive=E: - حرف درایو سیستم.

    SystemRoot=E:WINDOWS - دایرکتوری سیستم عامل ویندوز.

    مقدار برخی از متغیرها در دستور SET صادر نمی شود. اینها متغیرهایی هستند که مقادیر آنها به صورت پویا تغییر می کند:

    %CD% - مقدار رشته دایرکتوری فعلی را می گیرد.

    %DATE% - مقدار تاریخ جاری را می پذیرد.

    %TIME% - مقدار زمان جاری را می پذیرد.

    %RANDOM% - یک مقدار اعشاری تصادفی را در محدوده 1 -32767 می پذیرد.

    %ERRORLEVEL% - مقدار فعلی کد خروج وظیفه ERRORLEVEL را دریافت می کند

    %CMDEXTVERSION% - مقدار نسخه پردازنده فرمان CMD.EXE را برای پردازش فرمان توسعه یافته می گیرد.

    %CMDCMDLINE% - مقدار خطی را می گیرد که پوسته را فراخوانی کرده است.

    برای مشاهده مقدار یک متغیر می توانید از خط فرمان استفاده کنید:

    ECHO %متغیر%

    پارامترهای ورودی برای فایل دسته ای

    می‌توان پارامترهای خط فرمان را به یک فایل دسته‌ای منتقل کرد و از مقادیر آنها در بیانیه‌های خود فایل دسته‌ای استفاده کرد.

    فایل BAT< параметр1 > , < параметр2 >, ... < параметрN >

    در خود فایل دسته ای، اولین پارامتر به عنوان یک متغیر در دسترس خواهد بود %1 ، دومین - %2 و غیره نام خود فایل دسته ای به عنوان یک متغیر در دسترس است %0 . به عنوان مثال، اجازه دهید یک فایل دسته ای ایجاد کنیم که وظیفه آن نمایش مقادیر پارامترهای وارد شده بر روی صفحه نمایش است. دستوری که معمولا برای نمایش متن استفاده می شود این است

    ECHO< текст >

    با این حال، اگر متن با % 1 جایگزین شود، پارامتر اول با % 2 - دوم و غیره بازگردانده می شود.

    یک فایل parm.bat با محتوای زیر ایجاد کنید:

    echo پارامتر اول=%1

    echo پارامتر دوم=%2

    echo پارامتر سوم = %3

    و با دستور زیر آن را اجرا کنید:

    parm.bat اولین ثانیه "دو کلمه"

    پس از اجرای آن متوجه خواهید شد که چگونه کار می کند و پارامترهای دارای فاصله باید در دو گیومه قرار گیرند. برای اینکه خطوط پردازش شده توسط پردازشگر فرمان روی صفحه نمایش داده نشوند، می توانید از دستور استفاده کنیدECHO OFFبا قرار دادن آن در خط اول فایل دسته ای. برای اینکه یک خط در یک فایل دسته ای نادیده گرفته شود توسط پوسته در ابتدای آن قرار داده شده استREM< пробел > . به این ترتیب می توانید نظراتی را که اغلب در فایل های دسته ای بزرگ مفید هستند قرار دهید:

    rem ECHO OFF حالت نمایش محتویات خطوط یک فایل دسته ای را روی صفحه خاموش می کند.

    REM فقط نتیجه اجرای آنها را چاپ می کند.

    echo پارامتر اول=%1

    echo پارامتر دوم=%2

    echo پارامتر سوم = %3

    سعی کنید ECHO OFF را با @ECHO OFF جایگزین کنید - نتیجه خود صحبت می کند. خطی که حالت خروجی را خاموش می کند دیگر روی صفحه نمایش داده نمی شود.

    انتقال ها و برچسب ها

    در فایل های دسته ای می توانید از دستورات پرش شرطی استفاده کنید که منطق کار آنها را بسته به تحقق شرایط خاص تغییر می دهد. برای نشان دادن نحوه استفاده از پرش های شرطی، اجازه دهید یک فایل دسته ای ایجاد کنیم که هدف آن اختصاص یک حرف درایو از پیش تعریف شده به رسانه های قابل جابجایی است که درایوهای فلش هستند. شرایط به شرح زیر است - 2 درایو فلش وجود دارد که یکی از آنها باید در اکسپلورر به عنوان درایو X قابل مشاهده باشد: و دومی به عنوان درایو Y: صرف نظر از اینکه به کدام پورت USB متصل هستند. فرض می‌کنیم که دیسک‌های واقعی را می‌توان به صورت F: یا G متصل کرد: دیسک‌ها را با وجود یک فایل با یک نام خاص شناسایی می‌کنیم (بهتر است چنین فایلی را در دایرکتوری ریشه پنهان کنیم و آن را به نحوی غیرعادی نامگذاری کنیم):

    Flashd1.let - روی دیسک اول

    Flashd2.let - در دوم

    آن ها وظیفه فایل دسته ای بررسی وجود روی دیسک های قابل جابجایی است F:و G:فایل ها Flashd1.letیا Flashd2.letو بسته به اینکه کدام یک وجود دارد، یک حرف درایو اختصاص دهید ایکس:یا Y:

    برای جستجوی فایل روی دیسک، از دستور استفاده کنیداگر وجود داشته باشد:

    دستور IF EXIST نام فایل

    به عنوان یک دستور، استفاده از آن راحت ترین استSUBSTA که نام درایو را به دایرکتوری نگاشت می کند.

    SUBST X:C:- یک درایو مجازی X: ایجاد می کند که محتویات آن دایرکتوری ریشه درایو C خواهد بود:

    یک فایل دسته ای setXY.bat با خطوط زیر ایجاد کنید:

    پس از اجرای چنین فایلی، دیسک های X: و Y: خواهید داشت.اما اگر چنین فایلی را دوباره اجرا کنید، دستور SUBST یک پیغام خطا صادر می کند - زیرا دیسک های X: و Y: از قبل وجود دارند.

    توصیه می شود در صورتی که دیسک های مجازی X: و Y: قبلا ایجاد شده اند، اجرای SUBST را دور بزنید (یا قبل از نصب، آنها را با استفاده از SUBST با گزینه -d حذف کنید). فایل دسته ای را بارفتن به- انتقال کنترل به یک خط از یک فایل دسته ای توسط یک برچسب.

    برچسب GOTO

    برچسب باید روی یک خط جداگانه باشد و باید با دو نقطه شروع شود. بیایید تغییراتی در فایل دسته ای خود ایجاد کنیم تا هیچ پیام خطایی وجود نداشته باشد:

    REM اگر X وجود ندارد: - سپس به برچسب SETX بروید

    اگر X وجود ندارد: GOTO SETX

    REM اگر X وجود دارد: - برای بررسی Y بروید:

    IF EXIST G:flashd1.بگذارید SUBST X: G:

    IF EXIST F:flashd1.let SUBST X: F:

    REM اگر Y: وجود دارد - فایل دسته ای را پایان دهید.

    IF EXIST Y: GOTO EXIT

    IF EXIST G:flashd2.let SUBST Y: G:

    IF EXIST F:flashd2.let SUBST Y: F:

    خروجی REM از یک فایل دسته ای

    پیام خطای SUBST ناپدید شده است. علائم خطا در هنگام اجرای دستورات را نیز می توان در خود فایل دسته ای با تجزیه و تحلیل متغیر ردیابی کرد.سطح خطا، که مقدار آن در حین اجرای اکثر برنامه ها تشکیل می شود. ERRORLEVEL اگر برنامه بدون خطا خارج شود 0 و اگر خطایی رخ داده باشد 1 است. اگر مقادیر دیگری در برنامه اجرایی ارائه شده باشند، ممکن است وجود داشته باشد.

    همچنین می توانید از یک فایل دسته ای به عنوان دستور در خط فایل دسته ای استفاده کنید. علاوه بر این، برای انتقال با بازگشت به نقطه اجرای فایل دسته ای فراخوانی، از دستور استفاده می شود.زنگ زدن. بیایید یک فایل دسته ای test.bat با محتوای زیر ایجاد کنیم:

    ECHO Call 1.bat

    بازگشت ECHO.

    و فایل 1.bat حاوی دستورمکث،تعلیق اجرای یک فایل دسته ای تا زمانی که هر کلیدی فشار داده شود.

    هنگامی که test.bat اجرا می شود، پیامی روی صفحه نمایش داده می شود

    با 1.bat تماس بگیرید

    و کنترل با دستور مکث به 1.bat داده می شود. پس از شروع یک کلید روی صفحه کلید، خط فرمان "ECHO Return" را وارد کنید. و صفحه نمایش داده خواهد شد

    اگر CALL را در test.bat حذف کنید، بازگشت از فایل 1.bat انجام نخواهد شد. به هر حال، با استفاده از انتقال کنترل به یک فایل دسته ای، می توانید حلقه آن را سازماندهی کنید. سعی کنید خط زیر را به انتهای فایل test.bat اضافه کنید:

    با فشار دادن ترکیب CTRL-Break می توانید از حلقه فایل دسته ای خارج شوید. استفاده از دستور CALL برای فراخوانی یک رویه در یک فایل دسته ای امکان پذیر است. در این مورد، نه نام فایل خارجی، بلکه برچسب به عنوان آرگومان استفاده می شود:
    ....
    call:proc1
    ....
    :proc1
    ....
    خروج
    ....

    ایجاد فایل.

    ویندوز دستور خاصی برای ایجاد فایل ندارد، اما به چند روش می توان به راحتی از آن اجتناب کرد:

    از کنسولی به فایل دیگر کپی کنید

    COPY CON myfile.txt

    هنگامی که این دستور اجرا می شود، داده های صفحه کلید (دستگاه CON) در فایل myfile.txt نوشته می شود. با فشار دادن کلید F6 یا ترکیب CTRL-Z خروجی کامل می شود.

    تغییر مسیر خروجی

    ECHO 1 > myfile.txt

    هنگام اجرای این دستور، فایل myfile.txt حاوی کاراکتر "1" ایجاد می شود.

    ترکیبی از تغییر مسیر ورودی و خروجی:

    COPY CON > myfile.txt< xyz

    هنگام اجرای این دستور، مانند حالت اول، از کپی کردن از کنسول در یک فایل استفاده می شود، اما به جای داده های صفحه کلید، از ورودی دستگاه غیر موجود xyz استفاده می شود. سیستم پیامی مبنی بر عدم وجود چنین دستگاهی نمایش می دهد، اما یک فایل خالی myfile.txt با موفقیت ایجاد می شود.
    یک گزینه بسیار ساده کپی کردن از یک دستگاه ساختگی به نام است خالیبرای تشکیل پرونده
    myfile.txt null را کپی کنید

    اگر اغلب نیاز به ایجاد فایل‌های خالی دارید، می‌توانید فایل دسته‌ای خود را آماده کنید (به عنوان مثال، newfile.bat یا حتی بهتر از آن، nf.bat)، و نام فایل را به عنوان پارامتر در هنگام راه‌اندازی ارسال کنید.

    محتویات فایل:

    این فایل دسته ای را در فهرست راهنمای سیستم خود قرار دهید (C:windowssystem32 یا هر چیزی که در مسیرهای جستجوی PATH شما وجود دارد).

    خط فرمان:

    newfile.bat myfile.txt

    یا

    nf.bat myfile.txt

    یا
    nf myfile.txt

    اینجا تیم شماست nfبرای ایجاد یک فایل خالی در خط فرمان.

    تخصیص همان حرف درایو به یک درایو قابل جابجایی.

    وظیفه این است که اطمینان حاصل شود که یک درایو USB قابل جابجایی (درایو فلش) همیشه با همان حرف در دسترس است، صرف نظر از اینکه در کدام رایانه از آن استفاده می شود و چگونه متصل است. برای حل آن، از دستور SUBST که قبلاً در بالا ذکر شد استفاده می کنیم. بیایید حرف مورد نظر را برای دیسک قابل جابجایی انتخاب کنیم، به عنوان مثال - X. نام دیسکی که فایل دسته ای از آن راه اندازی شده است به عنوان متغیر %~d0 موجود است. یک فایل دسته ای با محتوای زیر ایجاد کنید:
    @echo خاموش
    زیر X: %~d0
    به این معنی - برای ایجاد یک دیسک مجازی X:، که با دیسک فیزیکی که فایل دسته ای از آن راه اندازی شده است، مرتبط است.
    برای اطلاعات بیشتر در مورد مقادیر جایگزینی متغیر %0، فایل دسته ای زیر را ببینید:

    @echo خاموش
    فایل پردازش اکو - %0
    ECHO تاریخ/زمان ایجاد/تغییر فایل دسته ای - %~t0
    مسیر فایل دسته ای ECHO - "%~f0"
    دیسک فایل دسته ای ECHO - %~d0
    فهرست فایل فرمان ECHO - "%~p0"
    نام فایل دسته ای ECHO - %~n0
    پسوند فایل ECHO Batch - %~x0
    ECHO نام کوتاه و پسوند - %~s0
    ویژگی های فایل دسته ای ECHO - %~a0
    اندازه فایل ECHO Batch - %~z0

    ایجاد نسل های آرشیو بر اساس تاریخ و زمان.

    بیایید مشکل زیر را حل کنیم - شما باید یک بایگانی از فایل های واقع در دایرکتوری C: Program FilesFAR ایجاد کنید. نام فایل بایگانی باید شامل زمان فعلی (hours.minutes.seconds - HH.MM.SS.rar) باشد و باید در فهرستی جدید قرار گیرد که نام آن باید شامل تاریخ فعلی (روز) باشد. .month.year - DD.MM. YYYY). برای بایگانی از آرشیو RAR استفاده می کنیم. راه اندازی فرمت برای ایجاد یک آرشیو:

    RAR a-r< путь и имя архива > < Путь и имя архивируемых данных >

    آ- دستور ایجاد آرشیو
    -r- کلیدی که بایگانی زیر شاخه ها را تعیین می کند (زیرا زیر شاخه ها در پوشه منبع وجود دارد).

    بنابراین، برای حل مشکل، باید نام ها و مسیرها را به درستی برای RAR ایجاد کنید. چرا باید از عوامل زیر استفاده کرد:

  • در فایل های دسته ای، می توانید به تاریخ و زمان فعلی دسترسی داشته باشید - متغیرهای %DATE% و %TIME%
  • با استفاده از دستور SET می توانید متغیرهای موقتی را در فایل های دسته ای ایجاد کنید.
  • مقدار متغیرهای موقت را می توان بر اساس %DATE% و %TIME% با پرش و (یا) جایگزینی قطعات آنها با استفاده از همان دستور SET تشکیل داد.

    تاریخ به دست آمده از متغیر %DATE% با تنظیمات پیش فرض منطقه ای به صورت زیر است:
    دوشنبه 01/21/2005- روز هفته (2 کاراکتر) - Space-date (10 کاراکتر)
    به عنوان مثال، بیایید یک دایرکتوری با دستور MD ایجاد کنیم< имя каталога >.
    یک متغیر موقت VDATE در حافظه ایجاد کنید و مقدار متغیر محیطی DATE را بدون 3 کاراکتر اول به آن اختصاص دهید - 01/20/2005:

    تنظیم VDATE=%date:~3%

    یک دایرکتوری در درایو C: ایجاد کنید که نام آن = تاریخ فعلی از متغیر VDATE:

    MD C:\%VDATE%
    پس از اجرای این دستور، دایرکتوری به نام 01/20/2005 در درایو C ایجاد می شود:

    زمان بازیابی از متغیر %TIME%:
    14:30:59.93 - ساعت، دقیقه، ثانیه، صدم ثانیه.
    صدم - این شاید در نام فایل بایگانی اضافی باشد. یک متغیر موقت VTIME ایجاد کنید و زمان فعلی را بدون 3 کاراکتر آخر به آن اختصاص دهید
    تنظیم VTIME=%time:~0،-3%
    اکنون VTIME = 14:30:59، اما کاراکتر ":" را نمی توان در نام فایل استفاده کرد، بنابراین آن را با یک نقطه جایگزین می کنیم.
    تنظیم VTIME=%VTIME::=.%
    متغیر VTIME مقدار 14.30.59 را برای نام فایل دریافت می کند.

    بیایید بایگانی را شروع کنیم:

    اکنون می توانید یک فایل دسته ای با محتوای زیر ایجاد کنید:

    تنظیم VDATE=%date:~3%
    md c:\%VDATE%
    تنظیم VTIME=%time:~0،-3%
    تنظیم VTIME=%VTIME::=.%
    rar a -r C:\%VDATE%\%VTIME%.rar "C:Program filesfar*.*"

    چنین فایل دسته‌ای را می‌توان از طریق بارگذاری خودکار یا به عنوان بخشی از یک اسکریپت، زمانی که کاربر وارد دامنه می‌شود، یا با استفاده از زمان‌بندی در یک زمان معین اجرا کرد، و شما همیشه آرشیوهای مرتب شده با زمان داده‌های حیاتی را خواهید داشت.

    با استفاده از متغیرهای نمایه کاربر آرشیو ایجاد کنید.

    این فایل دسته ای آرشیوهایی از محتویات پوشه My Documents کاربران Win2K/XP ایجاد می کند و آنها را در فهرست ها قرار می دهد.
    C: ARHIVMy DocumentsUsernameDateTime

    از متغیرهای USERPROFILE، USERNAME، WINDIR استفاده می‌شود، بنابراین این فایل دسته‌ای در WIN9X کار نخواهد کرد. (اگرچه می توانید دستوراتی را در autoexec.bat وارد کنید تا در صورت تمایل مقادیر این متغیرها را تنظیم کنید و از آن در نسخه تک کاربره با تغییرات اندک یا بدون تغییر استفاده کنید). محتویات فایل دسته ای کامنت شده است و پس از فهمیدن مثال قبلی نباید مشکل زیادی ایجاد کند:

    @echo خاموش
    rem متغیر FROM تنظیم شده است - از کجا می توان داده ها را برای بایگانی دریافت کرد
    تنظیم FROM=%USERPROFILE%My Documents
    rem متغیر TO تنظیم شده است - محل قرار دادن بایگانی ها
    تنظیم TO=C:arhivMy Documents\%USERNAME%
    rem یک دایرکتوری TO ایجاد کنید
    md "%TO%"
    rem نام دایرکتوری فرعی را از تاریخ جاری تشکیل دهید
    rem تاریخ فعلی در تنظیمات پیش فرض برای Win2K - دوشنبه 04/25/2005
    rem تاریخ جاری در تنظیمات پیش فرض برای WinXP - 04/25/2005
    rem از تاریخ فعلی، نام زیر شاخه را تشکیل می دهیم - 25.04
    rem Windir پیش فرض برای WinXP C:WINDOWS و برای Win2K C:WINNT است.
    IF /I %Windir% == C:WINNT GOTO Win2K
    تنظیم vdate=%DATE:~0،-5%
    GOTO SetFileName
    : Win2K
    تنظیم vdate=%DATE:~3،-5%
    rem بیایید نام فایل بایگانی را از زمان فعلی تشکیل دهیم - 12:00:00.99
    rem ، صدم ثانیه را کنار می گذاریم و کاراکتر: را با یک کاراکتر جایگزین می کنیم. نتیجه - 12.00.00
    :SetFileName
    تنظیم vtime=%TIME:~0،-3%
    تنظیم vtime=%vtime::=.%
    rem یک زیر شاخه برای فایل آرشیو ایجاد کنید
    md "%TO%\%VDATE%"
    دستور rem برای بایگانی. سوئیچ -r برای بایگانی با زیرپوشه ها مورد نیاز است
    گزینه rem برای بایگانی کننده ARJ: arj a -r "%TO%\%VDATE%\%VTIME%.arj" "%FROM%*.*"
    rem هنگام استفاده از آرشیو RAR:
    rar a -r "%TO%\%VDATE%\%VTIME%.rar" "%FROM%*.*"

    اجرای دستورات طبق برنامه

    WIN2K/XP یک ابزار خط فرمان داردAT،که به شما امکان می دهد یک دستور یا فایل دسته ای را در یک زمان مشخص در یک رایانه محلی یا راه دور اجرا کنید. برای استفاده از دستور AT، سرویس Task Scheduler باید در حال اجرا باشد (معمولاً به طور پیش فرض هنگام نصب سیستم شروع می شود).

    در [\computername] [ [کد] | /حذف]

    در زمان [\computername]

    [ /EVERY:day[،...] | /NEXT:day[,...]] "فرمان"

    \نام کامپیوترنام کامپیوتر راه دور. اگر این پارامتر حذف شود،

    با استفاده از کامپیوتر محلی

    کد شماره دنباله ای از کار برنامه ریزی شده. مشخص شده است که آیا باید با استفاده از کلید یک کار از قبل برنامه ریزی شده را لغو کنید /حذف.

    /حذفیک کار برنامه ریزی شده را لغو کنید. اگر کد وظیفه حذف شود،

    تمام وظایف برنامه ریزی شده برای مشخص شده را لغو می کند

    کامپیوتر.

    /آرههنگام لغو همه، درخواست تأیید لغو را لغو کنید

    وظایف زمانبندی شده.

    زمانزمان شروع فرمان

    /در ارتباط بودناجازه تعامل کار با کاربر،

    در حال اجرا بر روی کامپیوتر زمانی که کار در حال اجرا است. کارهایی که بدون این کلید راه اندازی می شوند برای کاربر رایانه نامرئی هستند.

    /هر روز[،...]کار در روزهای مشخص شده هفته یا

    ماه اگر تاریخ حذف شود، از روز جاری استفاده می شود

    /روز بعد[،...]کار در روز مشخص شده بعدی هفته اجرا خواهد شد

    (مثلا پنجشنبه آینده). اگر تاریخ حذف شود،

    روز جاری ماه استفاده می شود.

    "تیم"نام فایل فرمان یا دسته ای.

    نمونه هایی از استفاده:

    آنالوگ "ساعت زنگ دار" - پنجره های بازشو با متنی که نیاز به انجام برخی اقدامات را به کاربر فعلی یا مشخص شده یادآوری می کند. برای ارسال پیام به کاربر، از ابزار کمکی استفاده کنیدNET.EXE

    در ساعت 13:50 net.exe ارسال * وقت قهوه

    در ساعت 17:50 net.exe زمان کاربر را برای رفتن به خانه ارسال کنید

    در \SERVER 13:45 net.exe ارسال نیاز به راه اندازی مجدد سرور

    مشاهده لیست کارهای برنامه ریزی شده:

    حذف وظایف از قبل برنامه ریزی شده:

    در 3 / DELETE- وظیفه شماره 3 را حذف کنید

    در /حذف /بله- تمام وظایف را حذف کنید

    "کنترل پنل" - "کارهای برنامه ریزی شده" به شما امکان می دهد وظایف ایجاد شده توسط فرمان را مشاهده، تغییر و حذف کنید. ATوظایف

    توقف و شروع خدمات سیستم

    برای توقف و راه اندازی سرویس های Win2K/XP از خط فرمان، از دستور NET.EXE استفاده کنید

    NET.EXE STOP< имя службы >

    NET.EXE START< имя службы >

    امکان استفاده از یک نام کوتاه یا یک نام کامل وجود دارد ("Dnscache" یک نام کوتاه است، "DNS client" یک نام سرویس کامل است). نام سرویس حاوی فاصله‌ها در دو گیومه قرار می‌گیرد. مثالی از راه اندازی مجدد سرویس "مشتری DNS".

    نت استاپ "مشتری DNS"

    شروع خالص "مشتری DNS"

    به همین ترتیب، با استفاده از یک نام کوتاه:

    نت استاپ Dnscache

    شروع خالص Dnscache

    نام کامل سرویس را می توان از "سرویس ها" کپی کرد -< Имя службы >- "خواص" - "نمایش نام"

    برای مدیریت خدمات، استفاده از ابزار PsService.exe از ابزارهای PsTools بسیار راحت تر است. این ابزار نیازی به نصب ندارد و در هر سیستم عامل ویندوز کار می کند. علاوه بر راه اندازی و توقف سرویس، به شما امکان می دهد یک سرویس خاص را در رایانه های شبکه محلی جستجو کنید، وضعیت و پیکربندی سرویس را جستجو کنید، نوع راه اندازی را تغییر دهید، سرویس را متوقف کنید، ادامه دهید، راه اندازی مجدد کنید.

    برای کار با سرویس های سیستم در ویندوز XP، می توانید از ابزار کمکی استفاده کنید sc.exe، که به شما امکان می دهد نه تنها سرویس را متوقف / شروع کنید، بلکه وضعیت، راه اندازی و پارامترهای عملکرد آن را نیز بررسی کنید، پیکربندی را تغییر دهید و همچنین نه تنها با خدمات سیستم، بلکه با درایورها نیز کار کنید. اگر حقوقی دارید، می‌توانید خدمات را نه تنها در محلی، بلکه در یک دستگاه راه دور نیز مدیریت کنید. مثال ها:
    sc.exe DNSCache را متوقف می کند- سرویس DNSCache را در رایانه محلی متوقف کنید.
    sc \192.168.0.1 پرس و جو DNSCache- وضعیت سرویس DNSCache را در رایانه با آدرس IP 192.168.0.1 پرس و جو کنید
    sc \COMP DNSCache را شروع می کندسرویس DNSCache را در دستگاه COMP شروع کنید
    با تایپ کردن می توانید راهنمایی در مورد نحوه استفاده از این ابزار دریافت کنید:
    sc /؟

    چاپ مقدار متغیر ERRORLEVEL روی صفحه.

    این فایل دسته ای ساده، مقدار متغیر ERRORLEVEL را در یک خط فرمان خاص نمایش می دهد. ابتدا وجود حداقل یک پارامتر ورودی بررسی می شود و اگر چیزی مشخص نشده باشد پیغام خطا صادر می شود و خروج رخ می دهد. اگر حداقل یک پارامتر مشخص شده باشد، پارامترهای ورودی خط فرمان در نظر گرفته شده و اجرا می شوند و مقدار ERRORLEVEL با استفاده از دستور ECHO برگردانده می شود. محتویات فایل (من اسمش را echoEL.bat گذاشتم):

    @echo خاموش
    اگر "% 1" NEQ "" GOTO PARMOK
    ECHO نیاز به تنظیم خط فرمان برای تعریف ERRORLEVEL
    خروج
    : PARMOK
    %1 %2 %3 %4 %5 %6 %7 %8
    ECHO % 1 % 2 % 3 % 4 % 5 % 6 % 7 % 8 ERRORLEVEL = %ERRORLEVEL %

    نمونه های راه اندازی:
    اشتراک خالص echoEL.bat
    - دستور NET SHARE اجرا می شود (لیستی از منابع شبکه به اشتراک گذاشته می شود) و کد ERRORLEVEL صادر می شود.
    echoEL.bat NET SHARE X"="C:
    - دستور NET SHARE X:=C: اجرا خواهد شد (یک منبع شبکه مشترک با نام X ایجاد کنید و مسیر دایرکتوری ریشه درایو C: را ایجاد کنید) توجه داشته باشید که نماد = در دو گیومه محصور شده است.
    گزینه های ذکر شده در بالا خط فرمان صحیح را تنظیم می کنند. اما سعی کنید پارامتر اشتباهی را به NET.EXE یا دستوری که اصلا وجود ندارد بدهید، خواهید دید که ERRORLEVEL چه مقداری می گیرد. و توجه داشته باشید که خط فرمان در واقع در حال اجرا است و به عنوان مثال، گزینه "echoEL.bat format A:" شروع به قالب بندی فلاپی دیسک در درایو A: می کند.

    گفتگو با کاربر

    برای گفتگو با کاربر، می توانید از دستور زیر استفاده کنید:
    SET /P< имя переменной >=< текст >
    پس از اجرای آن، یک پیام متنی روی صفحه نمایش داده می شود< текст >و منتظر وارد شدن متن پاسخ باشید. به عنوان مثال - ما یک درخواست رمز عبور را اجرا می کنیم و مقدار آن را به متغیر "pset" اختصاص می دهیم:

    Set /p pset="رمز عبور را وارد کنید - "
    رمز عبور echo - %pset% است

    نقطه ضعف این روش عدم امکان ادامه اجرای یک فایل دسته ای در غیاب پاسخ کاربر است، بنابراین اغلب به جای تنظیم از برنامه های شخص ثالث استفاده می شود. یکی از آنها - CHOICE.COMدانلود (1.7 کیلوبایت).
    CHOICE یک پیام متنی به کاربر می دهد و منتظر می ماند تا یکی از گزینه های پاسخ داده شده انتخاب شود (کلید روی صفحه کلید). بر اساس نتایج انتخاب، متغیر ERRORLEVEL تشکیل می شود که مقدار آن برابر با عدد ترتیبی انتخاب است. به طور پیش فرض، دو گزینه وجود دارد - Y یا N. اگر پاسخ Y است - ERRORLEVEL = 1، اگر N - ERRORLEVEL = 2. شما می توانید از بیش از 2 گزینه انتخاب استفاده کنید و زمانی که کاربر هیچ کلیدی را برای مدت معینی فشار نداده باشد، امکان تنظیم پیش فرض انتخاب وجود دارد. فرمت خط فرمان:

    انتخاب‌های CHOICE] c,nn]
    /C[:]choices - انتخاب های معتبر را تعریف می کند. اگر تنظیم نشده است - YN
    /N - انتخاب ها را نشان ندهید.
    /S - حروف کوچک و بزرگ متفاوت است.
    /T[:]c,nn - انتخاب پیش فرض "c" بعد از "nn" ثانیه است
    text - رشته ای از متن خروجی به عنوان پرس و جو

    بیایید یک فایل دسته ای ایجاد کنیم که استفاده از CHOICE را نشان دهد. به فشار دادن کلیدهای "1"، "2"، 3 و "0" پاسخ می دهد. با فشار دادن "0" کامل می شود، و فشار دادن بقیه - پیامی برای کاربر. اگر چیزی در عرض 10 ثانیه فشار داده نشود - تکمیل.

    @ECHO OFF
    :انتخاب
    CHOICE /C:1230 /T:0,10 انتخاب شما
    اگر %ERRORLEVEL% معادله 4 GOTO EXIT شوید
    پژواک انتخاب شما=%ERRORLEVEL%
    GOTO CHOICE
    :خروج

    اکنون با استفاده از CHOICE می توانید فایل های دسته ای ایجاد کنید که منطق آن توسط کاربر قابل تعریف است.

    تاخیر در فایل های دسته ای

    روزی روزگاری، در DOS، یک دستور راحت SLEEP برای سازماندهی انتظار در یک فایل دسته‌ای استفاده می‌شد، اما پس از آن به دلایلی از کیت نصب ویندوز استاندارد به یک کیت منبع اضافی منتقل شد. شما به سادگی می توانید آن را از آنجا در پوشه system32 کپی کرده و در فایل های دسته ای خود استفاده کنید.

    : SLEEP N - که در آن N تعداد ثانیه های تاخیر است.

    اگر Resource Kit در دسترس نباشد، می‌توانید از دستور CHOISE که قبلاً بحث شد، بدون نمایش متن و با تولید خودکار پاسخ پس از nn ثانیه استفاده کنید (1-99):

    Choice.com /T:y,10 /N - 10 ثانیه تاخیر

    یک روش جهانی تر مبتنی بر پینگ کردن رابط حلقه بک با تعداد مورد نیاز بسته است. پینگ به رابط حلقه بک (نام میزبان - میزبان محلی یا آدرس IP 127.0.0.1) بدون هیچ گونه انتقال واقعی داده انجام می شود، یعنی. تقریباً فوراً و فاصله بین پینگ ها 1 ثانیه است. با تعیین تعداد پینگ ها با استفاده از کلید "-n"، می توانید n ثانیه تاخیر دریافت کنید:

    پینگ 127.0.0.1 -n 30 > nul - 30 ثانیه تاخیر ایجاد می کند

    جستجوی رایانه هایی که برنامه را اجرا می کنند

    برای پیاده سازی این اسکریپت از ابزارهای کاربردی بسته استفاده می شود. PSTools(توضیح کوتاه). بیایید یک فایل دسته‌ای ایجاد کنیم که در شبکه محلی رایانه‌هایی را با یک برنامه اجرایی که نام آن (قسمت ابتدایی نام) به عنوان پارامتر هنگام راه‌اندازی داده می‌شود، جستجو می‌کند، برای مثال، بازی. در صورت پیدا شدن، پیامی به رایانه ADMINCOMP ارسال می شود و برنامه شناسایی شده به اجبار خارج می شود. برای جستجو، از ابزار Pslist.exe استفاده می کنیم و کد برگشتی آن را تجزیه و تحلیل می کنیم. مقدار متغیر ERRORLEVEL برابر با صفر به این معنی است که برنامه کاربردی فرآیندی را در رایانه راه دور پیدا کرده است که با معیارهای جستجو مطابقت دارد. هنگام اجرای فایل دسته ای، نام فرآیند جستجو به عنوان یک پارامتر تنظیم می شود. بیایید فایل دسته ای خود را نام گذاری کنیم psl.bat. اجرای با یک پارامتر به شکل زیر است:
    بازی psl.bat
    ابتدا باید بررسی کنیم که آیا پارامتر هنگام راه اندازی در خط فرمان تنظیم شده است یا خیر و در صورت تنظیم نشدن، پیامی برای کاربر صادر می کنیم و از اجرا خارج می شویم. اگر پارامتر تنظیم شده است، به برچسب "PARMOK" بروید:
    @echo خاموش
    اگر "% 1" NEQ "" GOTO PARMOK
    ECHO شما باید نام فرآیند را برای جستجو تنظیم کنید
    خروج
    : PARMOK
    اکنون باید اطمینان حاصل کنیم که آدرس‌های IP رایانه‌ها به طور مداوم برای خط فرمان PSlist تولید می‌شوند. ساده ترین راه برای انجام این کار این است که یک متغیر محیطی موقت (که فقط برای مدت زمان فایل دسته ای معتبر است) به مقدار مولفه ثابت آدرس (به عنوان مثال - 192.168.0.) و مقدار محاسبه شده پایین تر تنظیم کنید. بخش (به عنوان مثال، در محدوده 1-254). به عنوان مثال، فرض می کنیم که باید کامپیوترهایی را در محدوده آدرس اسکن کنیم:
    192.168.0.1 - 192.168.0.30:
    IPTMP=192.168.0 را تنظیم کنید. - قسمت بالای آدرس
    مجموعه /A IPLAST=1 - قسمت پایین. کلید /A به معنای یک عبارت عددی محاسبه شده است
    تنظیم IPFULL=%IPTMP%%IPLAST% - مقدار آدرس IP کامل.
    خط فرمان PSlist به شکل زیر خواهد بود:
    pslist \%IPFULL% %1
    اکنون تنها چیزی که باقی می ماند این است که PSlist را به صورت دوره ای اجرا کنید و در هر چرخه یک آدرس به قسمت پایین آدرس اضافه کنید تا مقدار آن به 30 برسد و مقدار ERRORLEVEL را پس از اجرا تجزیه و تحلیل کنید. برای تجزیه و تحلیل نتیجه، انتقال را با دستور انجام می دهیم:
    GOTO REZULT%ERRORLEVEL%
    ارائه انتقال به برچسب REZULT0 هنگام شناسایی فرآیند و به REZULT1
    2013-08-25 14:35:35: مقالات : امنیت اطلاعات : نرم افزار . خوشت آمد؟
  • متغیرهای محیط را تنظیم، حذف و مشاهده می کند. فرمان بدون پارامتر فراخوانی می شود تنظیممتغیرهای محیطی مجموعه و مقادیر آنها را فهرست می کند.

    نحو

    تنظیم [[ [اصطلاح]] [ [متغیر = ]] خط]

    گزینه ها

    /a مشخص می کند که پارامتر خطیک عبارت عددی محاسبه شده است. /p یک مقدار را مشخص می کند متغیرخط ورودی متغیر نام متغیری را که می خواهید مقدار آن را تنظیم یا تغییر دهید مشخص می کند. string مقدار رشته ای را برای متغیر مشخص شده مشخص می کند. /؟ راهنما را در خط فرمان نمایش می دهد.

    یادداشت

    • استفاده از فرمان تنظیمدر کنسول ریکاوری

      تیم تنظیمبا گزینه های دیگر در کنسول بازیابی موجود است.

    • استفاده از کاراکترهای خاص

      نمادها<, >, |, &, ^ کاراکترهای ویژه پوسته هستند، یا باید قبل از آنها یک کاراکتر کنترلی (^) وجود داشته باشد یا هنگام استفاده از کاراکترها در یک پارامتر در داخل علامت نقل قول قرار گیرند. خط(مثلا، " محتوا_رشته & سمبل" ). هنگام نقل قول یک رشته حاوی کاراکترهای خاص، علامت نقل قول بخشی از مقدار متغیر محیطی در نظر گرفته می شود.

    • استفاده از متغیرهای محیطی

      متغیرهای محیطی برای کنترل عملکرد فایل‌ها و برنامه‌های دسته‌ای خاص و برای کنترل عملکرد ویندوز XP و زیرسیستم MS-DOS استفاده می‌شوند. تیم تنظیماغلب در فایل Autoexec.nt برای تنظیم متغیرهای محیطی استفاده می شود.

    • نمایش تنظیمات محیط فعلی

      وقتی تیم تنظیمبدون پارامتر فراخوانی می شود، تنظیمات فعلی نمایش داده می شود. معمولاً این تنظیمات شامل متغیرهای COMSPEC و PATH هستند که برای یافتن برنامه‌ها روی دیسک استفاده می‌شوند. دو متغیر محیطی دیگر که توسط ویندوز استفاده می شود PROMPT و DIRCMD هستند.

    • با استفاده از پارامترها

      هنگام تعیین مقادیر برای یک متغیر و یک رشته، مقدار متغیر به محیط اضافه می شود و رشته به آن متغیر اختصاص می یابد. اگر متغیر از قبل وجود داشته باشد، مقدار جدید جایگزین مقدار قبلی می شود.

      اگر در یک تیم تنظیمفقط نام متغیر و علامت مساوی (بدون مقدار) مشخص شده است، هیچ مقداری دیگر به متغیر محیطی نگاشت نخواهد شد که معادل حذف متغیر محیطی است.

    • استفاده

      جدول زیر عملگرهایی را که از این گزینه پشتیبانی می کنند فهرست می کند ، به ترتیب نزولی

      هنگام استفاده از عملگرهای منطقی (&& ||) یا عملگر مدول (%)، عبارت رشته را در علامت نقل قول قرار دهید. هر رشته غیر عددی در عبارت به عنوان نام متغیر محیطی در نظر گرفته می شود که مقادیر آنها قبل از پردازش به اعداد تبدیل شده است. اگر نام متغیر محیطی مشخص شده باشد که در محیط فعلی تعریف نشده باشد، آن را روی صفر تنظیم می‌کنیم و اجازه می‌دهد تا محاسبات روی مقادیر متغیر محیطی بدون استفاده از % برای بدست آوردن مقدار انجام شود.

      هنگام اجرای دستور مجموعه /aاز خط فرمان خارج از اسکریپت فرمان، مقدار نهایی عبارت نمایش داده می شود.

      مقادیر عددی اعداد اعشاری هستند، به استثنای اعدادی که با 0x برای اعداد هگزادسیمال و 0 برای اعداد اکتال پیشوند دارند. بنابراین، 0x12 همان 18 و 022 است. نمایش هشتی نیاز به دقت دارد. به عنوان مثال، 08 و 09 نامعتبر هستند زیرا 8 و 9 ارقام هشتگانه نیستند.

    • استفاده

      زمانی استفاده می شود که نیازی به اضافه کردن خط فرمان ندارید.

    • پشتیبانی از بسط متغیر محیطی با تاخیر

      اضافه شدن پشتیبانی برای توسعه متغیر محیطی با تاخیر این پشتیبانی به صورت پیش فرض غیرفعال است، می توانید با دستور آن را فعال یا غیرفعال کنید cmd /v.

    • کار با پسوندهای فرمان

      با فعال بودن پسوندهای فرمان (تنظیم به طور پیش فرض) و اجرای دستور تنظیمبدون هیچ مقدار، همه متغیرهای محیط فعلی نمایش داده می شوند. اگر دستور اجرا شود تنظیمبا یک مقدار، متغیرهای مربوط به آن مقدار نمایش داده می شوند.

    • استفاده از فرمان تنظیمدر فایل های دسته ای

      هنگام ایجاد فایل های دسته ای، از دستور استفاده کنید تنظیمبرای ایجاد متغیرها و استفاده از آنها به عنوان متغیرهای عددی از %0 قبل از %9 . همچنین می توانید از متغیرهای از استفاده کنید %0 قبل از %9 به عنوان ورودی برای یک فرمان تنظیم.

    • دسترسی به متغیرهای فرمان تنظیماز برنامه های دسته ای

      هنگام دسترسی به یک متغیر از داخل یک برنامه دسته ای، نام متغیر باید با علائم درصد (%) محصور شود. به عنوان مثال، اگر یک متغیر BAUD در یک برنامه دسته ای ایجاد شود، یک پارامتر جایگزین می تواند با استفاده از نام با آن مرتبط شود. %baud%در خط فرمان

    مثال ها

    برای تنظیم یک متغیر محیطی به نام TEST^1، دستور را وارد کنید:

    testVar=test^^1 را تنظیم کنید

    برای تنظیم یک متغیر محیطی به نام TEST&1، دستور را وارد کنید:

    testVar=test^&1 را تنظیم کنید

    مقدار متغیر فرمان تنظیمهر چیزی را که از علامت مساوی (=) پیروی می کند تعریف می کند. هنگام ورود:

    مجموعه testVar = "test^1"

    نتیجه به شرح زیر خواهد بود:

    testVar="test^1"

    برای تنظیم متغیر محیطی INCLUDE به گونه ای که یک رشته مرتبط C:\Inc (دایرکتوری Inc در درایو C) داشته باشد، می توانید از دستور زیر استفاده کنید:

    مجموعه include=c:\inc

    رشته C:\Inc را می توان در فایل های دسته ای با قرار دادن نام INCLUDE در علائم درصد (%) استفاده کرد. به عنوان مثال، در یک فایل دسته ای، می توانید از دستور زیر برای فهرست کردن محتویات دایرکتوری که توسط متغیر محیطی INCLUDE اشاره شده است استفاده کنید:

    هنگام اجرای خط فرمان ٪عبارتند از٪با رشته C:\Inc جایگزین می شود.

    شما همچنین می توانید از دستور استفاده کنید تنظیمدر یک برنامه دسته ای که یک دایرکتوری جدید به متغیر محیطی PATH اضافه می کند. مثلا:

    @echo خاموش
    rem ADDPATH.BAT یک دایرکتوری جدید اضافه می کند
    rem به متغیر محیط مسیر.
    setpath=%1;%path%
    تنظیم

    با فعال بودن پسوندهای فرمان (تنظیم به طور پیش فرض) و اجرای دستور تنظیمبا یک مقدار، تمام متغیرهای محیطی مربوط به مقدار نمایش داده می شوند. به عنوان مثال، هنگام تایپ در خط فرمان: تنظیم پ، نتیجه این خواهد بود:

    مسیر=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;..VBE;.JS;.JSE;.WSF;.WSH
    PROCESSOR_ARCHITECTURE=x86
    PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Step 1, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=0801
    ProgramFiles=C:\Program Files
    PROMPT=$P$G

    برخی از ترفندها و ویژگی های کار با دستور Set را می توانید در قسمت مشاهده کنید پردازش داده های حسابی.

    برای سوالات، بحث، نظرات، پیشنهادات و ... می توانید استفاده کنید بخش انجمناین سایت (ثبت نام الزامی است).