Разное

If windows cmd: Windows Batch Scripting: If/Then Conditionals

|find «Reply from»‘) DO @echo %i

В принципе, он возвращает значение ping в host1.internal без чего-либо еще. Я хочу добавить оператор if else так, чтобы если возвращаемое значение было пустым пространством, то возвращалось 0.

Я попытался сделать это так: ... DO IF %i (@echo %i) IF NOT %i (@echo 0), но он возвращает ( was unexpected at this time , и это довольно запутанно.

Спасибо.

windows

command-line

cmd

Поделиться

Источник


the-lay    

17 мая 2013 в 06:49

Содержание

5 ответов


  • bash-добавить дополнительное заявление IF

    У меня есть скрипт, который анализирует лог-файл varnishncsa. Цель скрипта заключается в том, что если кто-то обращается к определенному url на сервере, он добавляет свой ip-адрес в iptables, чтобы заблокировать их. В моем скрипте есть оператор, который игнорирует мой статический офисный ip-адрес. | по той же причине, что и ваша труба. ECHO-это просто печать строки, которая имеет 0 в 5-м токене.

    Поделиться


    dbenham    

    17 мая 2013 в 10:30



    0

    Таким образом, вы можете выполнить несколько операторов внутри DO:

    @FOR /L %%i in (1, 1, 5) DO @(
    @echo %%i
    @IF %%i==1 (@echo First)
    @IF NOT %%i==1 (@echo Other)
    )
    

    Каждая команда в своей строке сгруппирована по ‘()’. Надеюсь, это поможет…

    Поделиться


    Manuel del Castillo    

    17 мая 2013 в 07:42


    • Как запустить пакетный скрипт в отдельном экземпляре cmd.exe

      Если я запускаю свой bat-файл, он работает на системном cmd.exe. Я хочу, чтобы мой пакетный скрипт использовал мою версию cmd.exe, а не defualt, которая находится под C:\Windows\System32 (которая может быть подделана плохим парнем на скомпрометированной машине)

    • Как включить If statement в Find on cmd. exe или Powershell

      У меня есть файл регистратора, содержащий много строк информации. Я хочу создать скрипт, в котором он находит все строки, содержащие :: каталог ONLY, если строка FOLLOWING равна NOT :: вызов subInACL — > помещает все найденные строки в текстовый файл. Если есть timestamp, это новая строка….



    0

    Не прямой ответ на ваш вопрос, но другой способ достижения вашей цели (предполагая, что это тест, если хост существует/доступен) — использовать условное выполнение:

    ping -n 1 -4 host1.internal >nul && echo "Host replied" || echo "Host not replied"

    Это использует статус, возвращаемый командой (ping в данном случае), чтобы выполнить соответствующую команду — && означает успех и || -неудачу. Вы также можете использовать тесты уровня ошибок, но лично я нахожу условные выражения более удобочитаемыми, особенно непосредственно в командной строке.

    Дополнительный плюс заключается в том, что он не зависит от языка (ping возвращает локализованные строки для различных языков в Win).

    Поделиться


    wmz    

    17 мая 2013 в 07:44



    0

    Вот еще один метод проверки успеха или неудачи пинга.

    @echo off
    ping -n 1 -4 host1.internal >nul && (echo ping succeeded) || (echo ping failed) 
    

    Поделиться


    foxidrive    

    17 мая 2013 в 08:37


    Похожие вопросы:

    Не удается запустить скрипт powershell из cmd.exe?

    Я написал сценарий powershell, который можно запустить из powershell следующим образом: PS C:> S:\MyScript.ps1 -a select thing from table where name like ‘name’ Я сохранил его на общем диске…

    Создайте if statement в командной строке Bash (не скрипт)

    Я пытаюсь создать if statement в командной строке bash, а не скрипт, но оператор может быть введен в командную строку без возврата, потому что я должен запустить этот скрипт через вызов командной. ..

    Как добавить if statement в запись

    Как добавить if statement в эту запись? CorpData.Address viewAddress = new CorpData.Address { DocumentId = lblDocId.Text.ToUpper(), Address = txtAddress.Text.ToUpper(), AddressCity =…

    bash-добавить дополнительное заявление IF

    У меня есть скрипт, который анализирует лог-файл varnishncsa. Цель скрипта заключается в том, что если кто-то обращается к определенному url на сервере, он добавляет свой ip-адрес в iptables, чтобы…

    Jquery добавить конкретный if statement

    Возможно, странный вопрос! Я разработчик создал функцию jquery/JSON для загрузки некоторых продуктов! Он строит HTML так, как я не знаю. Я пытаюсь добавить if statement между кодами, но не могу…

    Как запустить пакетный скрипт в отдельном экземпляре cmd.exe

    Если я запускаю свой bat-файл, он работает на системном cmd.exe. Я хочу, чтобы мой пакетный скрипт использовал мою версию cmd. exe, а не defualt, которая находится под C:\Windows\System32 (которая…

    Как включить If statement в Find on cmd.exe или Powershell

    У меня есть файл регистратора, содержащий много строк информации. Я хочу создать скрипт, в котором он находит все строки, содержащие :: каталог ONLY, если строка FOLLOWING равна NOT :: вызов…

    Как добавить оператор if/else в этот оператор if/else?

    Мне нужна помощь, чтобы понять, как я могу изменить этот код: export const CommentsListBeijing = ({ comments }) => ( if (comments.length > 0 ) { <ButtonToolbar className=comment-list>…

    Получить возврат cmd.exe выхода

    Я разрабатываю приложение PowerShell. Я использую например Start-Process cmd.exe /c some_command #rest of the source code Но когда я запускаю это приложение, оно не ждет закрытия cmd.exe перед…

    Вложенная команда cmd.exe внутри команды powershell.exe, вызываемой через cmd.exe

    Можно ли настроить такой скрипт: file. exe [CMD(POWERSHELL(CMD))] Вот мой код на данный момент (объединенный из ответов, которые у меня есть здесь ) : :RETURN powershell -command Start-Process…

    Cmd if else примеры

    Формат командной строки:

    IF [NOT] ERRORLEVEL число команда

    IF [NOT] строка1==строка2 команда

    IF [NOT] EXIST имя_файла команда

    NOT – Указывает, что Windows должна выполнить эту команду, только если условие является ложным.

    ERRORLEVEL число – Условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.

    строка1==строка2 – Условие является истинным, если указанные строки совпадают.

    EXIST имя_файла – Условие является истинным, если файл с указанным именем существует.

    команда – Задает команду, выполняемую при истинности условия. За этой командой может следовать ключевое слово ELSE. В случае, если указанное условие ложно, будет выполнена команда, находящаяся после слова ELSE.

    Предложение ELSE должно располагаться в той же строке, что и команда, следующая за ключевым словом IF. Например:

    IF EXIST имя_файла. (
    del имя_файла.
    ) ELSE (
    echo имя_файла. missing.
    )

    Следующий пример содержит ОШИБКУ, поскольку команда del должна заканчиваться переходом на новую строку:

    IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. Missing

    Следующий пример также содержит ОШИБКУ, поскольку команда ELSE должна располагаться в той же строке, что и команда, следующая за IF:

    IF EXIST имя_файла. del имя_файла.
    ELSE echo имя_файла. missing
    Вот правильный пример, где все команды расположены в одной строке:

    IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. Missing

    Изменение команды IF при включении расширенной обработки команд:

    IF [/I] строка1 оператор_сравнения строка2 команда
    IF CMDEXTVERSION число команда
    IF DEFINED переменная команда

    где оператор_сравнения принимает следующие значения:

    EQU – равно
    NEQ – не равно
    LSS – меньше
    LEQ – меньше или равно
    GTR – больше
    GEQ – больше или равно,

    а ключ /I , если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Сравнения проводятся по общему типу данных, так что если строки 1 и 2 содержат только цифры, то обе строки преобразуются в числа, после чего выполняется сравнение чисел.

    Условие CMDEXTVERSION применяется подобно условию ERRORLEVEL, но значение сравнивается с внутренним номером версии текущей реализации расширенной обработки команд. Первая версия имеет номер 1. Номер версии будет увеличиваться на единицу при каждом добавлении существенных возможностей расширенной обработки команд. Если расширенная обработка команд отключена, условие CMDEXTVERSION никогда не бывает истинно.

    Условие DEFINED применяется подобно условию EXIST , но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена.

    Строка %ERRORLEVEL% будет развернута в строковое представление текущего значения кода ошибки ERRORLEVEL, за исключением ситуации, когда уже имеется переменная среды с именем ERRORLEVEL; в подобном случае подставляется значение этой переменной. Например, с помощью данной строки можно выполнить следующее:

    goto answer%ERRORLEVEL%
    :answer0
    echo Получен код возврата 0
    :answer1
    echo Получен код возврата 1

    Допускается и применение описанных выше операторов числового сравнения:

    IF %ERRORLEVEL% LEQ 1 goto okay

    Строка %CMDCMDLINE% будет развернута в исходную командную строку, переданную CMD.EXE до любой обработки, за исключением ситуации, когда уже определена переменная среды с именем CMDCMDLINE; в подобном случае подставляется значение этой переменной.

    Строка %CMDEXTVERSION% будет развернута в строку, представляющую собой текущее значение CMDEXTVERSION, за исключением ситуации, когда уже имеется переменная среды с именем CMDEXTVERSION; в подобном случае подставляется значение этой переменной.

    Создание пустого файла, имя которого задается параметром командной строки.

    Если параметр командной строки не задан, то пользователю выдается сообщение об ошибке.


    @echo off
    REM Проверить наличие имени файла, задаваемого в качестве параметра %1
    REM Если параметр %1 пустой – переход на метку error
    if «%1» EQU «» goto error
    REM Если параметр задан, создаем пустой файл, копированием из устройства nul
    copy nul «%1»
    exit
    :error
    ECHO File name required ! Must be – %

    n0 filename. ext
    :exit

    Командный файл, выполняющий опрос командой ping сетевых адресов в заданном диапазоне ( 192.168.1.1 – 192.168.1.254 ). Команда ping формирует значение переменной ERRORLEVEL равное нулю, если верно заданы параметры командной строки. То есть, определить доступность пингуемого IP-адреса методом анализа кода возврата ping не получится, поскольку он будет нулевым, независимо от того, отвечает ли пингуемое устройство, или нет. Поэтому, для решения данной задачи необходимо определить характерный признак, который присутствует в выводимых результатах только в том случае, когда пингуемое устройство доступно. Таким признаком может быть наличие строки символов «TTL» в выводе команды ping. Для определения признака можно использовать команду find в цепочке с командой ping .

    Примеры вывода для отвечающего и не отвечающего узлов:

    Ответ от 192.168.1.1: число байт=32 время=1мс TTL=64 – если устройство с данным IP-адресом доступно;
    Превышен интервал ожидания для запроса. – если устройство не отвечает;

    Команда find /I «TTL» возвращает код ERRORLEVEL равный 0 , если строка «TTL» присутствует в результате выполнения ping . Ключ /I имеет смысл использовать, чтобы результат не зависил от того, строчные или заглавные символы составляют строку «ttl».
    Результат работы командного файла записывается в текстовый файл iplist.txt

    @ECHO OFF
    REM Постоянная часть IP-адреса
    set IPTMP=192.168.1.
    REM Количество пингуемых узлов
    set N=254
    rem С какого адреса начать – начальное значение » хвоста » IP- адреса X.X.X.IPMIN
    set /A IPMIN=1
    ECHO %DATE% Опрос пингом %N% адресов начиная с %IPTMP%%IPMIN% >> iplist.txt
    rem M0 – метка для организации цикла
    :M0
    rem Переменная IPFULL – полное значение текущего IP-адреса
    set IPFULL=%IPTMP%%IPMIN%
    rem Если » хвост «больше N – перейти к завершению работы
    IF %IPMIN% GTR %N% GOTO ENDJOB
    ping -n 1 %IPFULL% | find /I «TTL»
    if %ERRORLEVEL%==0 Echo %IPFULL% >> iplist. txt
    rem Сформируем следующий IP-адрес
    set /A IPMIN=%IPMIN% + 1
    rem Перейдем на выполнение следующего шага
    GOTO M0
    rem Завершение работы
    :endjob
    exit

    Существуют некоторые особенности реализации командного интерпретатора CMD.EXE , которые необходимо учитывать при обработке значений переменных внутри циклов IF и FOR . Использование значений переменных внутри скобок, требует изменения стандартного режима интерпретации командного процессора. Разработчиками предусмотрена возможность запуска CMD.EXE с параметром /V:ON , что включает разрешение отложенного расширения переменных среды с применением символа восклицательного знака ( ! ) в качестве разделителя. То есть, параметр /V:ON разрешает использовать !var! в качестве значения переменной var во время выполнения внутри циклов команд FOR и IF . Но на практике чаще используется возможность локального включения данного режима внутри командного файла специальной директивой:

    После чего, можно обрабатывать принимаемые переменными значения внутри цикла, используя вместо знаков процента восклицательные знаки:

    FOR … (
    IF !ERRORLEVEL!==0 вместо %ERRORLEVEL%==0

    )

    &nbsp &nbsp В русскоязычной справке команды IF имеется ошибка, которая много лет переходит из версии в версию – вместо оператора EQU – равно , указано EQL – равно

    Обработка условий в пакетных программах

    Синтаксис

    Если расширения командного процессора разрешены, следует использовать следующий синтаксис:

    Параметры

    not Задает выполнение команды только в случае невыполнения условия. errorlevelчисло Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа. команда Команда, которая должна быть обработана в случае выполнения условия. строка1==строка2 Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные строки нет необходимости заключать в кавычки. existимя_файла Условие выполняется, если существует файл с именем имя_файла. оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.

    ОператорОписание
    EQUравно
    NEQне равно
    LSSменьше
    LEQменьше или равно
    GTRбольше
    GEQбольше или равно

    /i Сравнение строк без учета регистра знаков. Параметр /i можно использовать в конструкции string1==string2 команды if. Эти сравнения являются общими. Если и строка1, и строка2 состоят из цифр, строки преобразовываются в числа и выполняется сравнение чисел. cmdextversion число Условие выполняется, только если номер внутренней версии, связанный с расширениями командного процессора Cmd.exe, равен или больше числа. первая версия имела номер 1. Номер версии увеличивается на 1 при внесении в расширения командного процессора значительных изменений. Условие с cmdextversion не выполняется, если расширения командного процессора запрещены (по умолчанию они разрешены). defined переменная Условие выполняется, если переменная определена. выражение Команда и все ее параметры для обработке в командной строке при выполнении оператора else. /? Отображение справки в командной строке.

    Заметки

    • Если условие, заданное в команде if, выполняется, будет выполнена команда, следующая за условием. Если условие не выполняется, команда, заданная в операторе if, пропускается, а управление переходит к команде оператора else, если она задана.
    • Когда программа завершается, она возвращает код завершения. С помощью параметра errorlevel коды завершения можно использовать в качестве условий.
    • Использование команды definedпеременная

    При использовании команды defined переменная добавляются следующие три переменные: %errorlevel%, %cmdcmdline% и %cmdextversion%.

    %errorlevel% замещается строковым представлением текущего значения errorlevel, если только уже не существует переменная среды с именем ERRORLEVEL. В этом случае будет использовано ее значение. В следующем примере показано использование значения errorlevel после выполнения пакетной программы:

    Операторы сравнения оп_сравнения также можно использовать следующим образом:

    %cmdcmdline% замещается исходной командной строкой, переданной Cmd. exe, до ее обработки в Cmd.exe, если только уже не существует переменная среды с именем cmdcmdline. В этом случае будет использовано значение cmdcmdline.

    %cmdextversion% замещается строковым представлением текущего значения cmdextversion, если только уже не существует переменная среды с именем CMDEXTVERSION. В этом случае будет использовано ее значение.

    Использование оператора else

    Оператор else должен размещаться в той же строке, что и команда if. Пример:

    Приведенный ниже пример не будет работать, поскольку команда del должна заканчиваться новой строкой:

    Приведенный ниже пример не будет работать, поскольку команда else должна находиться в той же строке, что и команда if:

    Если необходимо разместить всю инструкцию в одной строке, можно использовать следующую правильную форму исходной инструкции:

    Примеры

    Если файл Product.dat не удается найти, появится следующее сообщение:

    Если в приведенном ниже примере при форматировании диска в дисководе A возникнет ошибка, будет выведено сообщение об ошибке:

    Если ошибка не возникнет, сообщение об ошибке выведено не будет.

    Команда if не может быть использована непосредственно для проверки существования каталога, но в каждом каталоге существует устройство (NUL). Следовательно, существование каталога может быть проверено, как показано ниже. В следующем примере проверяется наличие каталога:

    Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).

    Conditionally perform a command.

    IF will only parse numbers when one of (EQU, NEQ, LSS, LEQ, GTR, GEQ) is used.
    The == comparison operator always results in a string comparison.

    ERRORLEVEL

    There are two different methods of checking an errorlevel, the first syntax ( IF ERRORLEVEL . ) provides compatibility with ancient batch files from the days of Windows 95.
    The second method is to use the %ERRORLEVEL% variable providing compatibility with Windows 2000 or newer.

    IF ERRORLEVEL n statements should be read as IF Errorlevel >= number
    i. e.
    IF ERRORLEVEL 0 will return TRUE whether the errorlevel is 0, 1 or 5 or 64
    IF ERRORLEVEL 1 will return TRUE whether the errorlevel is 1 or 5 or 64
    IF NOT ERRORLEVEL 1 means if ERRORLEVEL is less than 1 (Zero or negative).
    This is not very readable or user friendly and does not easily account for negative error numbers.

    Using the %ERRORLEVEL% variable is a more logical method of checking Errorlevels:

    IF %ERRORLEVEL% NEQ 0 Echo An error was found
    IF %ERRORLEVEL% EQU 0 Echo No error found

    IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE (Echo An error was found)
    IF %ERRORLEVEL% EQU 0 Echo No error found || Echo An error was found

    This allows you to trap errors that can be negative numbers, you can also test for specific errors:
    IF %ERRORLEVEL% EQU 64 .

    To deliberately raise an ERRORLEVEL in a batch script use the EXIT /B command.

    It is possible (though not a good idea) to create a string variable called %ERRORLEVEL% (user variable)
    if present such a variable will prevent the real ERRORLEVEL (a system variable) from being used by commands such as ECHO and IF.

    Test if a variable is empty

    To test for the existence of a command line parameter – use empty brackets like this

    IF [%1]==[] ECHO Value Missing
    or
    IF [%1] EQU [] ECHO Value Missing

    When comparing against a variable that may be empty, we include a pair of brackets [ ] so that if the variable does happen to be empty the IF command still has something to compare: IF [] EQU [] will return True.

    You can in fact use almost any character for this a ‘

    ‘ or curly brackets, < >or even the number 4, but square brackets tend to be chosen because they don’t have any special meaning.
    When working with filenames/paths you should always surround them with quotes, if %_myvar% contains «C:Some Path» then your comparison becomes IF [«C:Some Path»] EQU []
    if %_myvar% could contain empty quotes, «» then your comparison should become IF [%_myvar%] EQU [«»]

    if %_myvar% will never contain quotes, then you can use quotes in place of the brackets IF «%_myvar%» EQU «»
    However with this pattern if %_myvar% does unexpectedly contain quotes, you will get IF «»C:Some Path»» EQU «» those doubled quotes, while not officially documented as an escape will still mess up the comparison.

    Test if a variable is NULL

    In the case of a variable that might be NULL – a null variable will remove the variable definition altogether, so testing for a NULL becomes:

    IF NOT DEFINED _example ECHO Value Missing

    IF DEFINED will return true if the variable contains any value (even if the value is just a space)

    To test for the existence of a user variable use SET VariableName , or IF DEFINED VariableName

    Test the existence of files and folders

    IF EXIST filename Will detect the existence of a file or a folder.

    The script empty.cmd will show if the folder is empty or not (this is not case sensitive).

    Parenthesis

    Parenthesis can be used to split commands across multiple lines. This enables writing more complex IF… ELSE… commands:

    When combining an ELSE statement with parentheses, always put the opening parenthesis on the same line as ELSE.
    ) ELSE ( This is because CMD does a rather primitive one-line-at-a-time parsing of the command.

    When using parentheses the CMD shell will expand [read] all the variables at the beginning of the code block and use those values even if the variables value has just been changed. Turning on DelayedExpansion will force the shell to read variables at the start of every line.

    Pipes

    When piping commands, the expression is evaluated from left to right, so

    IF SomeCondition Command1 | Command2 is equivalent to:

    (IF SomeCondition Command1 ) | Command2
    The pipe is always created and Command2 is always run, regardless whether SomeCondition is TRUE or FALSE

    You can use brackets and conditionals around the command with this syntax:

    IF SomeCondition (Command1 | Command2)
    If the condition is met then Command1 will run, and its output will be piped to Command2.

    The IF command will interpret brackets around a condition as just another character to compare (like # or @) for example:
    IF (%_var1%==(demo Echo the variable _var1 contains the text demo

    Placing an IF command on the right hand side of a pipe is also possible but the CMD shell is buggy in this area and can swallow one of the delimiter characters causing unexpected results.
    A simple example that does work:

    Echo Y | IF red==blue del *.log

    Chaining IF commands (AND).

    The only logical operator directly supported by IF is NOT , so to perform an AND requires chaining multiple IF statements:

    If either condition is true (OR)

    This can be tested using a temporary variable:

    Set «_tempvar=»
    If SomeCondition Set _tempvar=1
    If SomeOtherCondition Set _tempvar=1
    if %_tempvar% EQU 1 Command_to_run_if_either_is_true

    Delimiters

    If the string being compared by an IF command includes delimiters such as [Space] or [Comma], then either the delimiters must be escaped with a caret ^ or the whole string must be «quoted».
    This is so that the IF statement will treat the string as a single item and not as several separate strings.

    Test Numeric values

    IF only parses numbers when one of the compare-op operators ( EQU, NEQ, LSS, LEQ, GTR, GEQ ) is used.
    The == comparison operator always results in a string comparison.

    This is an important difference because if you compare numbers as strings it can lead to unexpected results: «2» will be greater than «19» and «026» will be less than «10».

    Correct numeric comparison:
    IF 2 GEQ 15 echo «bigger»

    Using parentheses or quotes will force a string comparison:
    IF (2) GEQ (15) echo «bigger»
    IF «2» GEQ «15» echo «bigger»

    This behaviour is exactly opposite to the SET /a command where quotes are required.

    Wildcards

    Wildcards are not supported by IF, so %COMPUTERNAME%==SS6* will not match SS64

    A workaround is to retrieve the substring and compare just those characters:
    SET _prefix=%COMPUTERNAME:

    0,3%
    IF %_prefix%==SS6 GOTO they_matched

    If Command Extensions are disabled IF will only support direct comparisons: IF ==, IF EXIST, IF ERRORLEVEL
    also the system variable CMDEXTVERSION will be disabled.

    IF does not, by itself, set or clear the Errorlevel.

    IF is an internal command.

    You see things; and you say ‘Why?’ But I dream things that never were; and I say ‘why not?’

    George Bernard Shaw

    Using parentheses to group and expand expressions.
    Conditional execution syntax (AND / OR)
    SET – Display or Edit environment variables.
    ECHO – Display message on screen.
    EXIT – Set a specific ERRORLEVEL.
    IFMEMBER – group member (Resource kit).
    SC – Is a Service running (Resource kit).
    Powershell: if – Conditionally perform a command.
    Equivalent bash command (Linux): if – Conditionally perform a command.

    Как запустить средство проверки системных файлов в Microsoft Windows?

    Симптомы

    В этой статье содержатся сведения о запуске средства проверки системных файлов в Windows.


    Средство проверки системных файлов может восстанавливать системные файлы в Microsoft Windows.

    Средство проверки системных файлов Windows (SFC) встроено во все современные версии Windows. Этот инструмент позволяет восстанавливать поврежденные системные файлы при установке Windows. SFC можно запустить из командной строки с повышенными привилегиями (используя полные права администратора) как в Windows, так и с помощью носителя для восстановления.

    Если позволяет время, рекомендуется перед запуском сканирования SFC запустить сканирование DISM (Система обслуживания образов развертывания и управления ими), если установлена ОС Windows 8 или более поздняя, или средства проверки готовности к обновлению системы, если установлена ОС Windows 7.

    Информацию об этом можно найти по следующей ссылке: https://support.microsoft.com/help/929833/use-the-system-file-checker-tool-to-repair-missing-or-corrupted-system.


    Запуск SFC в Windows от имени администратора

    Windows 7

    1. Нажмите кнопку Пуск и в строке поиска введите cmd.
    2. Нажмите правой кнопкой мыши на пункт cmd.exe и выберите Запуск от имени администратора.
    3. Нажмите Да в появившемся окне контроля учетных записей (UAC), и после появления мигающего курсора введите SFC /scannow и нажмите клавишу Enter.
    4. Запустится средство проверки системных файлов на целостность.
       

    Windows 8 или 8.1 и 10

    1. На рабочем столе нажмите комбинацию клавиш Win+X и в меню выберите пункт Командная строка (администратор). Вместо этого может отображаться Windows PowerShell (администратор).
    2. Нажмите «Да» в появившемся окне контроля учетных записей (UAC), после появления мигающего курсора введите SFC /scannow и нажмите клавишу Enter.
    3. Запустится средство проверки системных файлов на целостность.
       

    Запуск SFC с носителя для восстановления системы Windows

    Windows 7

    1. Нажмите клавишу F12 при появлении экрана-заставки с логотипом Dell и выберите носитель для восстановления системы из меню загрузки.
    2. Выберите Язык в соответствии с предпочтениями и нажмите кнопку Далее.
    3. Выберите параметр Восстановление компьютера.
    4. Выберите Установка Windows из списка и нажмите кнопку Далее (если параметры не отображаются, возможно, потребуется исправить раздел загрузки).
    5. Выберите Командная строка в списке.
    6. Введите следующую команду: sfc /scannow /offbootdir=c:\ /offwindir=c:\windows и нажмите клавишу Enter.
    7. Запустится средство проверки системных файлов на целостность.
       
    Windows 8 или 8.

    1 и 10

    1. Быстро коснитесь F12 при появлении экрана-заставки с логотипом Dell и выберите носитель для восстановления из меню загрузки.
    2. Выберите Язык в соответствии с предпочтениями и нажмите кнопку Далее.
    3. Выберите параметр Восстановление компьютера.
    4. Нажмите Устранение неполадок, а затем Дополнительные параметры.
    5. Выберите Командная строка в списке.
    6. Введите следующую команду: sfc /scannow /offbootdir=c:\ /offwindir=c:\windows и нажмите клавишу Enter.
    7. Запустится средство проверки системных файлов на целостность.

    Примечание. В зависимости от конфигурации системы этот процесс занимает до одного часа.

     


    Модификаторы

    Базовое сканирование SFC с использованием модификатора /scannow должно решить большинство проблем, но существуют и другие модификаторы, которые можно использовать для конкретных целей.

    Функция модификатора:

    /scannow Сканирование всех системных файлов с заменой поврежденных или неверных файлов.

    /scanonce Сканирование всех системных файлов один раз.

    /scanboot Сканирование всех системных файлов во время загрузки при каждой перезагрузке системы.

    /cancel Отменяет все предстоящие сканирования (например, модификатор /scanboot).

    /enable Включает WFP (защита файлов Windows), которая предотвращает изменение системных файлов Windows какими-либо программами.

    Возможные результаты

    Существует четыре возможных сообщения о завершении:

    Защита ресурсов Windows не обнаружила нарушений целостности.
    Защита ресурсов Windows обнаружила поврежденные файлы и успешно исправила их. Сведения содержатся в CBS.log %inDir%\logs\cbs\cbs.log.
    Защита ресурсов Windows обнаружила поврежденные файлы, но не смогла исправить некоторые из них. Сведения содержатся в CBS.log %Windir%\logs\cbs\cbs.log.
    Защите ресурсов Windows не удалось выполнить требуемую операцию.

    Если у вас возникнут вопросы об этой статье, обратитесь в службу технической поддержки Dell.


    20 нояб. 2020

    Оцените эту статью

    Благодарим вас за отзыв.

    К сожалению, наша система обратной связи в настоящее время не работает. Повторите попытку позже.

    Комментарии не должны содержать следующие специальные символы: ()\

    если | Документы Microsoft

    • 3 минуты на чтение

    В этой статье

    Выполняет условную обработку в пакетных программах.

    Синтаксис

      если [не] УРОВЕНЬ ОШИБКИ <число> <команда> [еще <выражение>]
    if [not]  ==   [else ]
    если [не] существует <имя файла> <команда> [еще <выражение>]
      

    Если расширения команд включены, используйте следующий синтаксис:

      if [/ i]     [else ]
    if cmdextversion <число> <команда> [еще <выражение>]
    если определено <переменная> <команда> [иначе <выражение>]
      

    Параметры

    Параметр Описание
    не Указывает, что команда должна выполняться, только если условие ложно.
    уровень ошибки <номер> Задает истинное условие только в том случае, если предыдущая программа, запущенная Cmd.exe, вернула код выхода, равный или больший, чем номер .
    <команда> Задает команду, которую следует выполнить, если выполняется предыдущее условие.
    == Задает истинное условие, только если строка1 и строка2 совпадают.Эти значения могут быть буквальными строками или пакетными переменными (например, % 1 ). Необязательно заключать буквальные строки в кавычки.
    существует <имя файла> Задает истинное условие, если указанное имя файла существует.
    <сравнить> Задает трехбуквенный оператор сравнения, в том числе:

    • EQU — равно
    • NEQ — не равно
    • LSS — меньше
    • LEQ — меньше или равно
    • GTR — больше
    • GEQ — больше или равно
    / я Заставляет сравнения строк игнорировать регистр.Вы можете использовать / i в string1 == string2 форме , если . Эти сравнения являются общими, поскольку если и строка1 , и строка2 состоят только из числовых цифр, строки преобразуются в числа и выполняется числовое сравнение.
    cmdextversion <номер> Задает истинное условие только в том случае, если внутренний номер версии связан с функцией расширений команд Cmd.exe больше указанного числа или равно ему. Первая версия — 1. Она увеличивается на единицу при добавлении значительных улучшений в расширения команд. Условие cmdextversion никогда не истинно, если расширения команд отключены (по умолчанию расширения команд включены).
    определено <переменная> Задает истинное условие, если определена переменная .
    <выражение> Задает команду командной строки и любые параметры, передаваемые команде в предложении else .
    /? Отображает справку в командной строке.
    Примечания
    • Если условие, указанное в предложении if , истинно, выполняется команда, следующая за условием. Если условие ложно, команда в предложении if игнорируется, и команда выполняет любую команду, указанную в предложении else .

    • Когда программа останавливается, она возвращает код выхода.Чтобы использовать коды выхода в качестве условий, используйте параметр errorlevel .

    • Если вы используете , определенный , в среду добавляются следующие три переменные: % errorlevel% , % cmdcmdline% и % cmdextversion% .

      • % errorlevel% : заменяется на строковое представление текущего значения переменной среды ERRORLEVEL. Эта переменная предполагает, что еще не существует переменной среды с именем ERRORLEVEL.Если есть, вместо этого вы получите это значение ERRORLEVEL.

      • % cmdcmdline% : заменяется на исходную командную строку, которая была передана в Cmd.exe перед любой обработкой Cmd.exe. Это предполагает, что еще не существует переменной среды с именем CMDCMDLINE. Если есть, вместо этого вы получите это значение CMDCMDLINE.

      • % cmdextversion% : заменяется на строковое представление текущего значения cmdextversion .Это предполагает, что еще не существует переменной среды с именем CMDEXTVERSION. Если есть, вместо этого вы получите это значение CMDEXTVERSION.

    • Вы должны использовать предложение else в той же строке, что и команда после , если .

    Примеры

    Чтобы отобразить сообщение Не удается найти файл данных, если не удается найти файл Product.dat , введите:

      если товар не существует.dat echo Не удается найти файл данных
      

    Чтобы отформатировать диск в дисководе A и отобразить сообщение об ошибке в случае возникновения ошибки во время процесса форматирования, введите следующие строки в пакетном файле:

     : начало
    @echo off
    формат a: / s
    если нет errorlevel 1 goto end
    echo Произошла ошибка во время форматирования. 
    :конец
    echo Конец пакетной программы.
      

    Чтобы удалить файл Product.dat из текущего каталога или отобразить сообщение, если Product.dat не найден, введите следующие строки в пакетном файле:

      ЕСЛИ СУЩЕСТВУЕТ Продукт.dat (
    del Product.dat
    ) ЕЩЕ (
    echo Файл Product.dat отсутствует.
    )
      

    Примечание

    Эти строки можно объединить в одну строку следующим образом:

      ЕСЛИ СУЩЕСТВУЕТ Product.dat (del Product.dat) ELSE (echo Файл Product.dat отсутствует.)
      

    Чтобы отобразить значение переменной среды ERRORLEVEL после запуска пакетного файла, введите следующие строки в пакетном файле:

      перейти к ответу% errorlevel%
    : answer1
    echo Программа вернула ошибку уровня 1
    перейти к концу
    : answer0
    echo Программа вернула уровень ошибки 0
    перейти к концу
    :конец
    эхо Готово!
      

    Чтобы перейти к метке ОК, если значение переменной среды ERRORLEVEL меньше или равно 1, введите:

      если% errorlevel% LEQ 1 перейти в норму
      

    Дополнительные ссылки

    MS-DOS и командная строка Windows, если команда

    Обновлено: 21. 05.2018 компанией Computer Hope

    Команда if выполняет условную обработку в пакетных программах.

    Наличие

    Команда if — это внутренняя команда, доступная и используемая в пакетных файлах.

    Если синтаксис

    Windows Vista и более поздние версии синтаксис

     IF [NOT] ERRORLEVEL числовая команда
    IF [НЕ] строка1 == строка2 команда
    ЕСЛИ [НЕ] СУЩЕСТВУЕТ имя файла, команда 
    НЕ Указывает, что Windows 2000 или XP должна выполнять команду, только если условие ложно.
    ОШИБКА номер Задает истинное условие, если последнее выполнение программы вернуло код выхода, равный указанному числу или превышающий его.
    строка1 == строка2 Задает истинное условие, если указанные текстовые строки совпадают.
    СУЩЕСТВУЕТ имя файла Задает истинное условие, если указанное имя файла существует.
    команда Задает команду, выполняемую при выполнении условия. За командой может следовать команда ELSE, которая выполнит команду после ключевого слова ELSE, если указанное условие — FALSE.

    Предложение ELSE должно находиться в той же строке, что и команда после IF.Например:

     ЕСЛИ СУЩЕСТВУЕТ имя файла. (
     дель имя файла.
    ) ЕЩЕ (
     эхо имя файла. отсутствующий.
    ) 

    Пример ниже НЕ будет работать, потому что команда del должна завершаться новой строкой:

     ЕСЛИ СУЩЕСТВУЕТ имя файла. дель имя файла. ИНАЧЕ echo filename. отсутствует 

    Пример ниже не будет работать, потому что команда ELSE должна находиться в той же строке, что и конец команды IF:

     ЕСЛИ СУЩЕСТВУЕТ имя файла. дель имя файла.
    ИНАЧЕ echo filename. отсутствует 

    Пример ниже будет работать, если вы хотите, чтобы все было в одной строке:

     ЕСЛИ СУЩЕСТВУЕТ имя файла.(del filename.) ELSE echo filename. отсутствует 

    Если включены расширения команд, IF изменяется следующим образом:

     IF [/ I] строка1 оператор сравнения строка2 команда
    IF CMDEXTVERSION числовая команда
    IF DEFINED переменная команда 

    , где оператор сравнения может принимать одно из следующих значений:

    • EQU — равно
    • NEQ — не равно
    • LSS — менее
    • LEQ — меньше или равно
    • GTR — более
    • GEQ — больше или равно

    и переключатель / I, если он указан, говорит о необходимости сравнения строк без учета регистра. Ключ / I также можно использовать в форме строка1 == строка2 оператора IF. Эти сравнения являются общими: если и строка1, и строка2 состоят из всех числовых цифр, они преобразуются в числа и выполняется числовое сравнение.

    Условное выражение CMDEXTVERSION работает аналогично ERRORLEVEL, за исключением того, что оно сравнивается с внутренним номером версии, связанным с расширениями команд. Первая версия — 1. Она будет увеличена на единицу, когда в Command Extensions будут добавлены значительные улучшения.Условие CMDEXTVERSION никогда не истинно, если расширения команд отключены.

    Условное выражение DEFINED работает как EXISTS, за исключением того, что оно принимает имя переменной среды и возвращает истину, если переменная среды определена.

    % ERRORLEVEL% заменяется строкой текущего значения ERRORLEVEL при условии, что еще не существует переменной среды с именем ERRORLEVEL, и в этом случае вы получите ее значение. После запуска программы в примере ниже показано использование УРОВНЯ ОШИБКИ:

     перейти к ответу% ERRORLEVEL%
    : answer0
    Программа echo имеет код возврата 0
    : answer1
    Программа echo имеет код возврата 1 

    Вы также можете использовать числовые сравнения ниже:

     IF% ERRORLEVEL% LEQ 1 перейти в норму 

    % CMDCMDLINE% расширяется до командной строки, переданной в CMD. EXE перед любой обработкой CMD.EXE, при условии, что нет переменной среды CMDCMDLINE, и в этом случае вы получите ее значение.

    % CMDEXTVERSION% заменяется строкой значения CMDEXTVERSION, при условии, что еще нет переменной среды с именем CMDEXTVERSION, и в этом случае вы получите ее значение.

    Windows XP и более ранний синтаксис

    Выполняет условную обработку в пакетных программах.

     IF [NOT] ERRORLEVEL числовая команда
    IF [НЕ] строка1 == строка2 команда
    ЕСЛИ [НЕ] СУЩЕСТВУЕТ имя файла, команда 
    НЕ Указывает, что Windows должна выполнять команду, только если условие ложно.
    ОШИБКА номер Задает истинное условие, если последнее выполнение программы вернуло код выхода, равный указанному числу или превышающий его.
    команда Задает команду, выполняемую при выполнении условия.
    строка1 == строка2 Задает истинное условие, если указанные текстовые строки совпадают.
    СУЩЕСТВУЕТ имя файла Задает истинное условие, если указанное имя файла существует.

    Если примеры

    Дополнительные примеры и варианты использования команды выбора см. На странице справки по пакетному файлу.

    Дополнительная информация
    • См. Наше определение if else для получения дополнительной информации и связанных ссылок по этому термину.

    5 операторов IF для использования в более умных пакетных скриптах Windows

    Если вы много работаете с пакетными файлами Windows, оператор IF предлагает очень мощный способ добавить гибкости вашим скриптам.

    В этой статье вы узнаете о пяти основных типах операторов IF, которые можно использовать в пакетном файле Windows, о том, как выглядит правильный синтаксис, и о реалистичных примерах для каждого из них.

    Если вы готовы приступить к написанию сценариев, приступим!

    1.

    Сравнить значения

    Одна из основных вещей, которые вам обычно нужно сделать в пакетном скрипте, — это сравнить два значения и следовать разному порядку действий в зависимости от сравнения.

    Например, предположим, что вы хотите написать пакетный сценарий, который ежедневно проверяет размер жесткого диска вашего компьютера. Если он меньше 3 ГБ, вы хотите получить по электронной почте отчет «Слишком мало места на жестком диске».

    Чтобы создать сценарий, который сравнивает текущее свободное пространство на жестком диске с вашим пределом, вы должны создать следующий пакетный сценарий и сохранить его как файл.bat файл.

      @echo off 
    set DriveLimit = 300000000
    for / f "usebackq delims == tokens = 2" %% x in (`wmic logicdisk, где" DeviceID = 'C:' "get FreeSpace / format: value`) do set FreeSpace = %% x
    Echo FreeSpace = "% FreeSpace%"
    Echo Limit = "% DriveLimit%"
    Если% FreeSpace% GTR% DriveLimit% (
    Echo Достаточно свободного места.
    ) else (
    Echo Недостаточно свободного места.
    )

    WMIC — это компонент Windows Management Instrumentation в Windows, который поставляется с набором команд, которые можно использовать для получения информации о ПК.Вот так команда «wmic» в этом скрипте вызывает пространство «логический диск» и помещает его в переменную FreeSpace. Теперь вы можете просто заменить строку «Echo: недостаточно свободного места» на команду blat email, чтобы отправить вам предупреждение.

    Наконец, настройте этот сценарий как запланированное пакетное задание Windows, которое выполняется ежедневно.

    Если вы никогда раньше не использовали blat, у нас есть статья, в которой показано, как настроить blat. Не знакомы с настройкой запланированных заданий? Мы подготовили для вас статью о том, как настроить запланированные задачи Windows.

    2.Сравнение строк

    Еще одно ценное сравнение IF, которое вы можете провести в пакетном задании, — это , сравнивая строки .

    В следующем примере вы увидите, как проверить версию Windows с помощью пакетного задания.Затем вы можете сравнить это с ожидаемой версией Windows.

    Некоторые варианты использования этого сценария могут быть использованы для ИТ-аудита, когда вам нужно быстро запустить сценарий и убедиться, что текущая операционная система является самой последней или требует обновления.

    Вот как выглядит этот сценарий.

      @echo off 
    for / f "tokens = 4-5 delims =. " %% i in ('ver') установить VERSION = %% i. %% j
    if "% version%" == "6 .0 "echo Windows Vista.
    if"% version% "==" 6.1 "echo Windows 7
    if"% version% "==" 6.2 "echo Windows 8
    if"% version% "==" 6.3 "echo Windows 8.1
    if "% version%" == "10.0" echo Windows 10.

    Вот как выглядит результат этого скрипта.

    Возможность сравнивать строки в пакетном режиме открывает целый список возможностей. Если вы изучите всю информацию, которую можно получить с помощью команды WMIC, вы увидите, сколько статистических данных о вашем компьютере вы можете отслеживать. Вы можете использовать запланированные пакетные задания, чтобы предупреждать об этом.

    3.Проверить, существует ли файл

    Еще одна полезная ситуация, когда оператор IF в пакетном файле — это , чтобы проверить наличие файла данных .

    Часто пакетное задание — это просто инструмент мониторинга, который может быть запланирован для проверки новых входящих файлов данных в определенном каталоге.

    Затем пакетное задание может либо скопировать этот файл в другое место, где он может быть обработан, либо запустить какой-либо сценарий Windows, который обрабатывает файл и выводит файл Excel.

    (В прошлом мы писали о том, как использовать сценарии Windows для обработки данных в файл Excel; неплохо почитать.)

    Использование пакетного файла для проверки наличия файла в каталоге выполняется быстро и легко. Вот как выглядит этот сценарий.

      @echo off 
    , если существует c: \ temp \ datafile.txt (
    % WINDIR% \ SysWOW64 \ cmd.exe
    cscript LoadToExcel.vbs
    ) иначе (
    rem файл не существует
    )

    Сравнение IF EXISTS полезно для многих вещей.

    Например, если у вас работает система или приложение, которое создает новые журналы ошибок в определенной папке при возникновении проблемы, вы можете время от времени запускать пакетное задание, чтобы отслеживать, создаются ли новые журналы ошибок, чтобы вы могли отправить предупреждение.

    4.

    Проверить, не выполнена ли команда

    Аспект сценария пакетного файла, который используют слишком немногие ИТ-специалисты или программисты, — это проверка на наличие ошибок .

    Существует множество пакетных заданий, которые выполняют важные ИТ-задачи, такие как резервное копирование важных файлов или выполнение операций копирования файлов. Когда эти пакетные задания не работают, системы выходят из строя, и люди это замечают.

    Гораздо разумнее получить предупреждение, когда ваше пакетное задание не удалось выполнить команду , прежде чем это заметят человек.Таким образом, вы сможете заранее решить проблему.

    Вы можете сделать это, используя переменную% errorlevel%, которую большинство приложений и команд возвращают после запуска.

    Все, что вам нужно сделать, это выполнить команду IF% ERRORLEVEL%.Если приложение или команда вернули ноль, все в порядке. Если нет, то вам нужно отправить себе электронное письмо.

      @echo off 
    xcopy C:
    omefolder E: \ backupfolder
    IF% ERRORLEVEL% NEQ 0 <команда blat для отправки электронной почты>

    Вам не нужно идти по электронной почте. Вы всегда можете вести журнал ошибок, который можно проверять каждое утро, или запустить второе приложение или команду, которые попытаются скопировать данные с помощью альтернативной команды. Какое бы действие вы ни хотели предпринять, IF% ERRORLEVEL% позволяет вам это сделать.

    Если вы предпочитаете использовать оператор IF для проверки конкретных кодов ошибок, Windows предлагает довольно обширный список кодов ошибок.

    5.Проверьте отсутствие параметров

    Последний полезный оператор IF — это не конкретная команда, а проверка того, что сценарий получил соответствующие входные параметры .

    Например, предположим, что вы написали сценарий, который выполняет команду xcopy из папки ввода в общую сетевую папку, используемую группой.Пользователь просто должен следовать за вашим именем скрипта с параметрами, определяющими его личный путь к файлу.

    Очевидно, что вы не можете правильно выполнить свой скрипт без указанного пути, поэтому вы можете поместить оператор IF в начало вашего скрипта, чтобы убедиться, что были введены оба параметра.

    Вот как это выглядит.

      @echo off 
    IF [% 1] == [] (
    GOTO sub_message
    ) ELSE (
    xcopy% 1 E: \ backupfolder
    )
    GOTO eof
    : sub_message
    echo Вы забыли указать свой путь.
    : eof

    Если вы никогда раньше не использовали параметры в пакетных сценариях, символ процента, за которым следует число, представляет переменную параметра.% 1 — первый параметр,% 2 — второй и так далее.

    Пакетные задания могут быть эффективными

    Многие люди начинают использовать пакетные задания для простых задач, которые необходимо выполнять последовательно. С помощью операторов IF можно сделать ваши сценарии более интеллектуальными.

    Конечно, если вы действительно хотите подняться на ступеньку выше, вы можете подумать о том, чтобы взглянуть на VBA с нашим руководством по созданию вашего первого приложения VBA или, возможно, даже изучить программирование на Python.

    Часто вы можете использовать более продвинутые языки программирования, подобные этим, или научиться использовать PowerShell для выполнения многих из тех же задач, для которых вы в настоящее время используете пакетные задания.

    6 лучших скрытых камер для защиты вашего дома

    Нужна незаметная камера наблюдения, чтобы посетители не знали, что за ними наблюдают? Попробуйте использовать эти скрытые камеры по всему дому.

    Об авторе

    Райан Дьюб
    (Опубликовано 951 статья)

    Райан имеет степень бакалавра в области электротехники. Он проработал 13 лет в области автоматизации, 5 лет в ИТ, а теперь работает инженером по приложениям.Бывший управляющий редактор MakeUseOf, он выступал на национальных конференциях по визуализации данных и был показан на национальном телевидении и радио.

    Более
    От Райана Дьюба

    Подпишитесь на нашу рассылку новостей

    Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

    Еще один шаг…!

    Подтвердите свой адрес электронной почты в письме, которое мы вам только что отправили.

    IF … OR IF … в пакетном файле Windows

    Решение zmbq хорошее, но не может использоваться во всех ситуациях, например, внутри блока кода, такого как цикл FOR DO (…).

    Альтернативой является использование индикаторной переменной. Инициализируйте его как неопределенное, а затем определите его, только если выполняется одно из условий ИЛИ. Затем используйте IF DEFINED в качестве финального теста — нет необходимости использовать отложенное расширение.

      ДЛЯ..... ДЕЛАТЬ (
      установить "ИСТИНА ="
      ЕСЛИ cond1 устанавливает ИСТИНА = 1
      ЕСЛИ cond2 устанавливает ИСТИНА = 1
      ЕСЛИ определено ИСТИНА (
        ...
      ) еще (
        ...
      )
    )
      

    Вы могли бы добавить логику ELSE IF, которую использует arasmussen, на том основании, что она может работать немного быстрее, если 1-е условие истинно, но я никогда не беспокоюсь.

    Приложение — Это повторяющийся вопрос с почти идентичными ответами на использование ИЛИ в операторе IF Пакетный сценарий WinXP

    Заключительное приложение — Я почти забыл свой любимый метод проверки, является ли переменная одним из списков нечувствительных к регистру значений. Инициализируйте тестовую переменную, содержащую список допустимых значений с разделителями, а затем используйте поиск и замену, чтобы проверить, находится ли ваша переменная в списке. Это очень быстро и требует минимального кода для произвольно длинного списка. Это требует отложенного расширения (или трюка CALL %% VAR %%). Также тест НЕ ЧУВСТВИТЕЛЬНЫЙ.

      установить «ТЕСТ =; значение1; значение2; значение3; значение4; значение5;»
    if "! TEST:;% VAR%; =!" neq "! ТЕСТ!" (эхо истина) еще (эхо ложь)
      

    Вышеупомянутое может не пройти, если VAR содержит = , поэтому тест не является надежным.

    При выполнении теста в блоке, где требуется отложенное расширение для доступа к текущему значению VAR, тогда

      для ... do (
      установить "ТЕСТ =; значение1; значение2; значение3; значение4; значение5;"
      for / f %% A in (";! VAR !;") делать, если "! TEST: %% A =!" neq "! ТЕСТ!" (эхо истина) еще (эхо ложь)
    )
      

    FOR такие параметры, как «delims =», могут потребоваться в зависимости от ожидаемых значений в VAR

    Вышеупомянутую стратегию можно сделать надежной даже с = в VAR, добавив немного больше кода.

      установить «ТЕСТ =; значение1; значение2; значение3; значение4; значение5;»
    if "! TEST:;% VAR%; =!" neq "! ТЕСТ!" if "! TEST:;% VAR%; =;% VAR%;" == "! TEST!" эхо верно
      

    Но теперь мы потеряли возможность предоставлять предложение ELSE, если мы не добавим индикаторную переменную. Код начал выглядеть немного «некрасиво», но я думаю, что это наиболее эффективный и надежный метод проверки, является ли VAR одним из произвольного числа параметров без учета регистра.

    Наконец, есть более простая версия, которая, на мой взгляд, немного медленнее, потому что она должна выполнять один IF для каждого значения., и и т. Д. Еще одно ограничение этого решения заключается в том, что оно не предоставляет возможности для предложения ELSE, если вы не добавите индикаторную переменную. Преимущества заключаются в том, что он может быть чувствительным к регистру или нечувствительным в зависимости от наличия или отсутствия опции IF / I .

    Условная обработка с помощью команды if

    Windows 7 / Начало работы


    Команда if позволяет запускать определенные команды только при выполнении определенных условий.
    Если это одно из основных требований настоящего языка программирования, и
    расширен, если команда, предоставленная CMD, делает язык командного файла намного больше
    полезнее, чем было во времена COMMAND.COM. Вы используете команду if в пакетных файлах
    гораздо чаще, чем непосредственно в командной строке.

    Основные форматы команды if:

    , если команда условия
    и
        если условие (команда1) еще команда2
     

    Первая версия проверяет какое-то условие и, если оно истинно, выполняет команду. Если условие
    неверно, команда игнорируется.

    Вторая версия предоставляет вторую команду, которая запускается, если условие ложно. В
    В этой версии выполняется одна или другая команда в зависимости от условия.Вы можете сгруппировать несколько команд в операторе if, используя круглые скобки. Например, утверждения

    , если не существует input.dat (
        echo Внимание: создание нового файла input.dat
        dir / b c: \ inputs> input.dat
    )
     

    проверьте, существует ли файл input.dat, и, если его нет, запустите echo и dir
    команды. Сгруппированные команды упрощают чтение и запись командных файлов CMD.
    чем формат DOS, где вам пришлось бы вместо этого написать:

     если существует input.dat goto haveinput
        echo Внимание: создание нового ввода.dat файл
        dir / b c: \ inputs> input.dat
    : haveinput
     

    Вы также можете использовать предложение else с сгруппированными командами в следующем формате:

     если условие (
        команды
        ...
    ) еще (
        команды
        ...
    )
     

    Отступы необязательны; это просто упрощает чтение команд.
    Вот несколько тестов условий, перечисленных здесь:

    • [not] strng1 == strng2
      Сравнивает strng1 с strng2 и истинно, если строки в точности равны, включая
      дело.Смысл может быть изменен, если перед тестом поставить слово not.
    • [не] номер уровня ошибки
      Проверяет значение статуса выхода последней запущенной программы. Условие
      Значение true, если статус выхода больше или равен числу. Не меняет смысла;
      тест верен, если статус выхода меньше числа.
    • [не] существует [путь] имя
      Проверка верна, если указанный файл или каталог существует. Смысл может быть обратным
      с not. Чтобы проверить каталог, добавьте обратную косую черту (\) в конец каталога.
      имя.Например, если существует c: \ temp \, обнаружит наличие каталога
      c: \ temp, но его не обманет файл с именем c: \ temp.
    • [/ i] strng1 compareop strng2
      Сравнивает две строки и возвращает результат сравнения. Если оба
      строки состоят только из цифр, сравнение производится численно; в противном случае это
      сделано по алфавиту. Если используется / i, в тесте не учитывается регистр. Compareop может быть одним из следующих:
      EQU — равно
      NEQ — не равно
      LSS — меньше
      LEQ — меньше или равно
      GTR — Больше
      GEQ — больше или равно
    • cmdextversion number
      Тест верен, если номер версии расширений CMD больше или
      равно числу. Номер версии расширения команды для Windows 7, Vista,
      а XP — 2. Тест всегда ложный, если расширения команд отключены.
    • определено переменная
      Проверка верна, если указанная переменная среды определена и не пуста.

    Расширенный оператор if — одно из самых больших улучшений CMD. В сочетании с
    переменные среды, у вас есть достойный язык программирования.

    5 способов открыть командную строку, когда Windows не загружается

    Командная строка — это мощный инструмент, который можно использовать для многих целей, включая поиск и устранение неполадок в Windows.Если Windows работает правильно, запустить ее легко, но что делать, если Windows отказывается загружаться? Как вы «загружаетесь» в командную строку (cmd.exe) «из BIOS», чтобы решить возникшие проблемы? Из этого туториала Вы узнаете, как это сделать:

    1. Как открыть командную строку при загрузке с помощью сочетания клавиш Shift + F10

    По нашему мнению, это лучший способ открыть командную строку при загрузке, и поэтому мы показываем его в первую очередь. Это можно сделать сразу после BIOS POST, и это работает независимо от того, какая версия Windows установлена ​​на вашем компьютере. Он работает даже в том случае, если на вашем компьютере не установлена ​​Windows или какая-либо другая операционная система. Вот что вам нужно сделать:

    Сначала используйте установочный носитель Windows (DVD, USB-накопитель и т. Д.) Для загрузки компьютера или устройства. Неважно, какой установочный носитель предназначен для Windows 10, Windows 7 или Windows 8.1: любой из них работает.

    Загрузите компьютер с установочного носителя Windows (USB, DVD и т. Д.).)

    Когда появится мастер установки Windows, одновременно нажмите клавиши Shift + F10 на клавиатуре. Это сочетание клавиш открывает перед загрузкой командную строку .

    Сочетание клавиш Shift + F10 для открытия командной строки при загрузке

    ПРИМЕЧАНИЕ: Если у вас еще нет под рукой установочного DVD-диска Windows или USB-накопителя, прочтите эти руководства, чтобы узнать, как создать свой собственный установочный диск Windows: Загрузите файлы ISO с Windows 10 и Office (все версии) и как для использования Windows USB / DVD Download Tool.

    2. Как загрузить командную строку с установочного USB-накопителя Windows 10 (или 8.1) или DVD

    Этот метод открытия командной строки «из BIOS» аналогичен предыдущему, за исключением того, что он использует больше щелчков, чем клавиш. 🙂

    Запустите компьютер и в меню загрузки BIOS выберите диск, на котором у вас есть файлы установки Windows 10 (или 8.1), в качестве загрузочного устройства. Подождите, пока загрузится Windows Setup , и выберите язык и клавиатуру, которые вы хотите использовать.Затем нажмите Далее .

    Мастер установки Windows

    Не нажимайте на Установить сейчас . Вместо этого щелкните или коснитесь «Восстановить компьютер» в нижнем левом углу мастера или нажмите R на клавиатуре.

    Выбор Ремонт вашего компьютера

    Вам предлагается выбрать вариант продолжения. Выберите Устранение неполадок .

    Вариант устранения неполадок

    Вам показано несколько дополнительных параметров. Здесь нажмите или коснитесь Командная строка .

    Откройте командную строку перед загрузкой Windows

    Командная строка (cmd.exe) загружена, и вы можете использовать ее для восстановления неработающей системы Windows или для любых других действий.

    CMD открывается перед запуском

    3. Как запустить командную строку, когда Windows 10 (или 8.1) не загружается, с помощью USB-накопителя для восстановления

    Если у вас есть диск восстановления Windows 10 или Windows 8.1, вы можете использовать его для запуска командной строки . Вставьте диск, затем запустите компьютер и используйте меню загрузки BIOS, чтобы выбрать съемный ремонтный диск в качестве загрузочного устройства.Когда загрузится диск восстановления, он сначала попросит вас выбрать раскладку клавиатуры. Выберите тот, который хотите использовать.

    Выбор раскладки клавиатуры

    Затем вы можете выбрать один из нескольких вариантов. Выберите Устранение неполадок .

    Вариант устранения неполадок

    В списке Дополнительные параметры щелкните или коснитесь Командная строка .

    Запустить командную строку перед загрузкой

    Командная строка загружена, и вы можете ее использовать.

    4.Как загрузить командную строку «при запуске» с установочного компакт-диска / DVD-диска Windows 7 или карты памяти USB

    Если Windows 7 не загружается правильно, вы можете загрузиться с установочного диска. Запустите компьютер и настройте его на загрузку с DVD-привода или USB-накопителя, на котором находятся установочные файлы Windows 7. Подождите, пока появится мастер установки Windows 7, выберите язык, который вы хотите использовать, и нажмите Далее .

    Мастер установки Windows 7

    Затем нажмите « Восстановить компьютер .”

    Восстановите свой компьютер в Windows 7

    Окно Параметры восстановления системы теперь загружено. Щелкните Командная строка в нижней части окна.

    Откройте командную строку при установке Windows 7

    Отображается командная строка , которую можно использовать для устранения неполадок.

    Окно CMD открылось перед загрузкой

    5. Как попасть в командную строку «из BIOS» с помощью восстановительного диска Windows 7

    Если Windows 7 не загружается правильно, вы можете загрузиться с диска восстановления, который можно создать на рабочем компьютере с Windows 7.Вот руководство о том, как создать свой привод: что такое диск для восстановления системы и как создать его в Windows. Запустите компьютер и в меню загрузки BIOS выберите диск восстановления системы в качестве загрузочного устройства. После загрузки восстановительного диска выберите нужный язык для клавиатуры, нажмите Далее и дождитесь, пока восстановительный диск просканирует операционные системы, доступные на вашем компьютере. Выберите Windows 7 и нажмите Далее .

    Параметры восстановления системы в Windows 7

    Если у вас есть несколько учетных записей на вашем компьютере, вам будет предложено выбрать имя пользователя, а затем ввести для него пароль.Сделайте это, а затем нажмите ОК . Окно «Параметры восстановления системы» загружено. Щелкните Командная строка в нижней части окна.

    Откройте окно командной строки

    Мне удалось загрузить командную строку при запуске. Что дальше?

    После того, как вам удалось загрузить командную строку при запуске, вы можете использовать дополнительные инструменты, такие как diskpart или bootrec , для восстановления разделов вашей системы, загрузочных записей, записи нового загрузочного сектора (при необходимости) или восстановите данные конфигурации загрузки .

    Если это то, что вы должны сделать, чтобы ваш компьютер снова заработал, эти руководства могут вас заинтересовать: Как использовать diskpart, chkdsk, defrag и другие команды, связанные с диском, и Как использовать командную строку для устранения проблем с загрузочные записи вашего ПК.

    Почему вы хотите загрузиться из командной строки?

    Надеюсь, это руководство было полезно для вас, когда вы столкнулись с проблемами на компьютерах и устройствах Windows. Если вы знаете другие способы запуска командной строки , когда Windows отказывается правильно загружаться, не стесняйтесь поделиться ими, используя комментарии ниже.

    4 способа узнать, используете ли вы 32-разрядную или 64-разрядную версию Windows

    Хотя мы постепенно переходим в мир полностью 64-битных ПК, не все в настоящее время используют 64-битную версию Windows. Когда дело доходит до установки некоторого программного обеспечения, особенно драйверов, важно знать, является ли ваша Windows 32-битной или 64-битной.

    Находка
    если вы используете 32-битную или 64-битную Windows, не составит труда,
    тем не менее, и есть несколько способов сделать это. В этом
    статьи, давайте рассмотрим четыре самых простых и легких способа
    определить, какая версия Windows работает на вашем ПК.

    Системная информация

    Мой
    выберите самый простой и понятный способ определить,
    вы используете 32-битную или 64-битную Windows, находится в системе Windows
    Информация.

    Чтобы найти это, нажмите клавиши Windows + X , затем щелкните System . Появится новое окно О , в котором сначала будет показано состояние защиты вашего ПК.

    На полпути вниз по этой странице вы найдете заголовок Device Specifications .

    Здесь,
    информация, указанная как ваш Тип системы , будет четко указывать
    какую версию Windows вы используете.

    Командная строка

    Другой
    простой способ выяснить архитектуру вашего процессора и если
    у вас 32-разрядная или 64-разрядная версия Windows — с помощью команды
    Подсказка.

    Введите cmd в строку поиска меню «Пуск» Windows. Лучшим совпадением должно быть Командная строка . Вместо того, чтобы открывать его, как обычно, щелкните правой кнопкой мыши результат поиска и выберите Запуск от имени администратора .

    Когда откроется терминал командной строки, введите команду set pro . После нажатия клавиши Enter в приглашении отобразится список информации о процессоре вашего компьютера и операционной системе.

    Здесь есть три способа определить, какая версия Windows у вас установлена:

    • АРХИТЕКТУРА_ПРОЦЕССОРА
    • PROCESSOR_IDENTIFIER
    • Программные файлы (x86)

    Флаги, зависящие от процессора, должны указывать, какой процессор вы используете: 32-разрядный или 64-разрядный.

    Если вы не меняли аппаратное обеспечение вашего ПК, наличие флага ProgramFiles (x86) должно указывать, какая версия Windows у вас установлена. Это появится только в том случае, если вы используете 64-битную версию Windows.

    Программные файлы

    Это
    простой трюк является побочным продуктом метода командной строки. Опять же, если
    ваша машина ни разу не меняла оборудование с тех пор
    установка Windows, наличие нескольких папок Program Files
    расскажет все, что вам нужно знать.

    Первый,
    перейдите к диску C: в проводнике Windows.

    Если вы используете 32-разрядную версию Windows, вы должны увидеть только папку Program Files (и все программы внутри нее будут 32-разрядными).

    Однако для 64-разрядных версий Windows папка Program Files будет содержать 64-разрядные приложения, а папка Program Files (x86) будет содержать все 32-разрядные приложения.

    64-разрядные версии Windows имеют обратную совместимость с 32-разрядными приложениями, но 32-разрядные версии Windows не могут запускать 64-разрядные приложения.Вот почему папки так структурированы.

    Если вы хотите узнать больше, ознакомьтесь со статьей Help Desk Geek, в которой объясняется, почему 64-битной Windows нужны две папки Program Files.

    Диспетчер задач

    Пока
    этот метод требует немного больше усилий, чем другие, он также обеспечивает
    информация, относящаяся к приложениям, которые вы используете в данный момент.

    • Для начала нажмите клавиши Windows + X , затем щелкните Диспетчер задач .Другой распространенный ярлык — это нажатие клавиш Ctrl + Alt + Delete .
    • Когда появится окно диспетчера задач, первое, что вам нужно сделать, это убедиться, что вы видите полную информацию. Если в нижнем левом углу отображается Меньше деталей , значит, вы. Если отображается Подробнее , щелкните значок стрелки слева от этого текста, чтобы развернуть это окно.
    • Теперь перейдите на вкладку Details . По умолчанию необходимая нам информация здесь не отображается.Чтобы отобразить его, щелкните правой кнопкой мыши любой заголовок столбца ( Имя , PID и т. Д.) И щелкните Выбрать столбцы .
    • В этом окне установите флажок рядом с Platform и нажмите кнопку OK .

    Теперь будет столбец «Платформа», в котором будет отображена программная архитектура каждого из ваших запущенных процессов.

    Должно быть легко определить, какую версию Windows вы используете на основе этого: 32-разрядная версия не будет отображать 64-разрядные приложения, в то время как 64-разрядные версии Windows будут очевидны, если даже одно приложение является 64-разрядным. кусочек.

    As
    количество недавно выпущенных систем с 32-битной архитектурой
    продолжают падать, путаница между 32-битными и 64-битными версиями
    Windows станет меньше проблем. Но до тех пор
    Лучше быть в безопасности, чем потом сожалеть!

    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *