Windows cmd if not exist

if not exist "%USERPROFILE%\.qgis-custom\" (
    mkdir "%USERPROFILE%\.qgis-custom" 2>nul
    if not errorlevel 1 (
        xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
    )
)

You have it almost done. The logic is correct, just some little changes.

This code checks for the existence of the folder (see the ending backslash, just to differentiate a folder from a file with the same name).

If it does not exist then it is created and creation status is checked. If a file with the same name exists or you have no rights to create the folder, it will fail.

If everyting is ok, files are copied.

All paths are quoted to avoid problems with spaces.

It can be simplified (just less code, it does not mean it is better). Another option is to always try to create the folder. If there are no errors, then copy the files

mkdir "%USERPROFILE%\.qgis-custom" 2>nul 
if not errorlevel 1 (
    xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
)

In both code samples, files are not copied if the folder is not being created during the script execution.

EDITED — As dbenham comments, the same code can be written as a single line

md "%USERPROFILE%\.qgis-custom" 2>nul && xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e

The code after the && will only be executed if the previous command does not set errorlevel. If mkdir fails, xcopy is not executed.

Эта статья рассказывает, как в bat файле проверить, существует ли определенный файл или определенная папка (директория),

Как проверить, существует ли файл – условием if exist или командой dir

Проверить наличие директории – условием if exist или командой dir

Заключение

Как проверить, существует ли файл

Проверка наличия файла командой if exist

Командный интерпретатор cmd поддерживает условную обработку в такой форме:

if [not] exist <filename> <command> [else <expression>]

Например, чтобы показать сообщение об ошибке, если не найден необходимый для работы файл

if not exist product.dat echo Не удается найти файл данных

Условие поддерживает маски в именах файлов, например:

if exist *.tmp goto cleanup 

Команда if [not] exist – наиболее часто используемый вариант, самый короткий для записи.

Проверка наличия файла командой dir

Это альтернативный способ проверки существования файла, основанный на том, что команда dir имяфайла возвращает 0, если файл существует, и 1, если файл не существует:

dir products.dat > nul
if errorlevel 1 ( echo не существует ) else ( echo существует )

С операторами && и || можно составить более удобную команду:

dir products.dat > nul && echo существует

или

dir products.dat > nul || echo не существует

в зависимости от того, какую ситуацию требуется обнаружить – когда файл найден или когда не найден.

Как проверить, существует ли папка

Проверка наличия папки командой if exist

Та же команда if exist используется и для проверки наличия папки, но с одним отличием: после имени папки следует поставить обратную наклонную черту \, чтобы команда проверяла именно папку:

if exist products\ ( echo папка существует ) else ( echo папка не существует )

Если не ставить символ обратной наклонной черты, то команда будет давать положительный результат и в случае, когда существует файл с таким именем. На самом деле, это не такая большая проблема, потому что обычно файлы имеют расширения (csv, dat, pdf, xlsx и так далее), а папки используется без расширений, и поэтому совпадение имён между файлами и папками – большая редкость. Но всё равно лучше сразу прописывать правильно, тем более что разница в одном символе.

Проверка наличия папки командой dir

Вариант, основанный на команде dir, применим и для папок, также с обратной наклонной чертой \:

dir папка\
if errorlevel 1 ( echo не существует ) else ( echo существует )

или с операторами && и ||

dir папка\ >nul 2>&1 && echo папка существует
dir папка\ >nul 2>&1 || echo папка не существует

Проверка наличия сетевой папки WebDav

Хотя сетевая папка при подключении по протоколу WebDav выглядит как обычная папка, в её работе есть некоторые отличия. Например, если сетевой диск подключен к букве N:, то команда if exist N:\ может давать положительный ответ TRUE при неактивном подключении. А вот запись со звёздочкой:

будет давать TRUE именно при активном подключении.

Если имя файла содержит пробелы

Имена с пробелами необходимо указывать в кавычках:

if not exist "all products.dat" echo Не удается найти файл данных

В противном случае, интерпретатор выдаст ошибку:

"products.dat" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Заключение

В итоге, для проверки того, что файл или папка существует, можно использовать команду-условие if exist или команду dir.

Рекомендуется указывать имена папок с обратной наклонной чертой (backslash) \, чтобы не путать с именем файла.

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

Если имя файла или папки содержит символы Unicode, которые отсутствуют в 8-битной таблице ASCII (OEM), их невозможно прописать в bat файле. Это ограничение самих bat файлов. Обходной путь – использование коротких имен 8.3, но лучше использовать WSH/JScript/VBScript или PowerShell.

The solution when the resource is a file it is pretty straight-forward as indicated by others:

C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.

Unfortunately, the above does not work for directories. The EXIST function returns the same result for both missing and present folders. Fortunately, there is an obscure workaround:

C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.

It turns out that to support constructs like appending >NUL on command statements, there is a sort of virtual file named «NUL» in every directory. Checking for its existence is equivalent to a check for the directory’s existence.

This behavior is documented in a Microsoft knowledge base article ( https://support.microsoft.com/en-us/kb/65994 ) and I have confirmed its behavior on FreeDOS 1.1 and in a Windows 7 command shell.

EXTRA: The KB article indicates this technique can also be used to see if a drive is present. In the case of checking for drive existence, however, caveats exist:

  • An Abort, Retry, Fail? error occurs if the drive is not formatted.

  • Using this technique to check for drive existence depends on device driver implementation and may not always work.

Командная строка Windows cmd предоставляет множество возможностей для работы с файлами и папками. Одной из таких возможностей является проверка существования файла на жестком диске.

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

Для проверки существования файла в командной строке Windows cmd можно использовать команду IF EXIST. Эта команда позволяет проверить, существует ли файл по указанному пути.

IF EXIST путь_к_файлу (

echo Файл существует

) ELSE (

echo Файл не существует

)

Вместо путь_к_файлу нужно указать путь к файлу, который вы хотите проверить на существование.

Содержание

  1. Проверка существования файла в командной строке Windows cmd
  2. Почему важно проверять существование файла
  3. Как использовать команду «dir» для проверки существования файла
  4. Проверка существования файла с помощью команды «if exist»

Проверка существования файла в командной строке Windows cmd

Командная строка Windows cmd предоставляет удобный способ проверки существования файла. Для этого можно использовать команду if exist. Эта команда проверяет, существует ли указанный файл или папка, и выполняет определенные действия в зависимости от результата проверки.

Синтаксис команды if exist следующий:

if exist путь_к_файлу (команда)

где:

  • путь_к_файлу — путь к файлу или папке, которую нужно проверить на существование.
  • команда — команда или действие, которое нужно выполнить, если файл или папка существуют.

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

Например, чтобы проверить существование файла «example.txt» в текущей папке, можно ввести следующую команду:

if exist example.txt (echo Файл существует)

В данном случае, если файл «example.txt» существует, будет выведено сообщение «Файл существует». Если файл не существует, то сообщение не будет выведено.

Также можно использовать команду if not exist, чтобы выполнить действия в случае отсутствия файла или папки. Эта команда имеет аналогичный синтаксис:

if not exist путь_к_файлу (команда)

где путь_к_файлу — путь к файлу или папке, которую нужно проверить на отсутствие.

Используя команды if exist и if not exist, можно управлять выполнением команд в зависимости от наличия или отсутствия файлов или папок в командной строке Windows cmd.

Почему важно проверять существование файла

Ниже приведены основные причины, почему важно проверять существование файла:

  1. Избежание ошибок и исключений: Если файл отсутствует, и вы пытаетесь его открыть, прочитать или изменить, это может вызвать ошибки или исключения в вашем коде. Проверка наличия файла позволяет избежать подобных ошибок и обеспечить более стабильную работу программы или скрипта.
  2. Предотвращение потери данных и времени: Проверка существования файла позволяет избежать потери данных и времени, связанных с выполнением операций над отсутствующим файлом. Если файл не существует, можно предпринять соответствующие действия, например, вывести сообщение об ошибке или выполнить альтернативные операции.
  3. Обеспечение целостности системы: Некорректные операции с файлами могут повредить целостность системы. Проверка наличия файла позволяет избежать неправильных действий и сохранить работоспособность системы.
  4. Улучшение пользовательского опыта: Проверка существования файла помогает предупредить пользователя о возможных проблемах или ошибках, связанных с отсутствием необходимых файлов. Это улучшает пользовательский опыт и помогает избежать недовольства пользователей.

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

Как использовать команду «dir» для проверки существования файла

Команда «dir» используется в командной строке Windows для отображения списка файлов и папок в указанном каталоге. Она также может быть использована для проверки существования файла. Вот как это сделать:

Шаг 1:

Откройте командную строку Windows, нажав Win + R и введя «cmd» в поле запуска.

Шаг 2:

Введите следующую команду:

dir путь_к_файлу

Замените «путь_к_файлу» на путь к файлу, существование которого вы хотите проверить.

Пример:

Если вы хотите проверить существование файла «example.txt» на рабочем столе, введите следующую команду:

dir C:\Users\ваше_имя_пользователя\Desktop\example.txt

Шаг 3:

Нажмите клавишу Enter. Если файл существует, он будет отображен в списке файлов и папок, который покажет команда «dir». Если файла не существует, команда «dir» не выведет его в списке.

Примечание:

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

Теперь вы знаете, как использовать команду «dir» для проверки существования файла в командной строке Windows.

Проверка существования файла с помощью команды «if exist»

Для проверки существования файла в командной строке Windows можно использовать команду «if exist». Эта команда позволяет проверить наличие файла или папки по указанному пути и выполнить определенные действия в зависимости от результата.

Синтаксис команды «if exist» выглядит следующим образом:

if exist путь_к_файлу (
команды_если_файл_существует
) else (
команды_если_файл_не_существует
)

При выполнении команды «if exist» необходимо указать путь к файлу или папке в круглых скобках после ключевого слова «exist». Если файл или папка существуют, то будут выполнены команды внутри первой пары круглых скобок. Если файла или папки не существует, то будут выполнены команды внутри второй пары круглых скобок.

Пример использования команды «if exist»:

if exist C:\путь_к_файлу (
echo Файл существует
) else (
echo Файл не существует
)

В данном примере выполняется проверка наличия файла по указанному пути «C:\путь_к_файлу». Если файл существует, то будет выведено сообщение «Файл существует». Если файла не существует, то будет выведено сообщение «Файл не существует».

Команда «if exist» может быть полезной при написании скриптов или автоматизации задач в командной строке Windows, когда требуется осуществить проверку наличия файла перед выполнением определенных действий.

  • Overview
  • Part 1 – Getting Started
  • Part 2 – Variables
  • Part 3 – Return Codes
  • Part 4 – stdin, stdout, stderr
  • Part 5 – If/Then Conditionals
  • Part 6 – Loops
  • Part 7 – Functions
  • Part 8 – Parsing Input
  • Part 9 – Logging
  • Part 10 – Advanced Tricks

Computers are all about 1’s and 0’s, right? So, we need a way to handle when some condition is 1, or else do something different
when it’s 0.

The good news is DOS has pretty decent support for if/then/else conditions.

Checking that a File or Folder Exists

IF EXIST "temp.txt" ECHO found

Or the converse:

IF NOT EXIST "temp.txt" ECHO not found

Both the true condition and the false condition:

IF EXIST "temp.txt" (
    ECHO found
) ELSE (
    ECHO not found
)

NOTE: It’s a good idea to always quote both operands (sides) of any IF check. This avoids nasty bugs when a variable doesn’t exist, which causes
the the operand to effectively disappear and cause a syntax error.

Checking If A Variable Is Not Set

IF "%var%"=="" (SET var=default value)

Or

IF NOT DEFINED var (SET var=default value)

Checking If a Variable Matches a Text String

SET var=Hello, World!

IF "%var%"=="Hello, World!" (
    ECHO found
)

Or with a case insensitive comparison

IF /I "%var%"=="hello, world!" (
    ECHO found
)

Artimetic Comparisons

SET /A var=1

IF /I "%var%" EQU "1" ECHO equality with 1

IF /I "%var%" NEQ "0" ECHO inequality with 0

IF /I "%var%" GEQ "1" ECHO greater than or equal to 1

IF /I "%var%" LEQ "1" ECHO less than or equal to 1

Checking a Return Code

IF /I "%ERRORLEVEL%" NEQ "0" (
    ECHO execution failed
)


<< Part 4 – stdin, stdout, stderr


Part 6 – Loops >>

  • Windows check process on port
  • Windows button does not work
  • Windows cmd write to file
  • Windows cmd for files in directory
  • Windows check port open remote