it-swarm.com.ru

Создать папку с пакетом, но только если она еще не существует

Кто-нибудь может сказать мне, как сделать следующее в пакетном скрипте Windows? (*.bat):

  • Создать папку, только если она еще не существует

Более подробно, я хочу создать папку с именем VTS на диске C:\, но только если эта папка еще не существует. Я не хочу перезаписывать содержимое папки, если она уже существует и пакет выполняется.

384
Bill

Вы просто используете это: if not exist "C:\VTS\" mkdir C:\VTS это создаст каталог, только если папка не существует.

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

540
The Answerer
if exist C:\VTS\NUL echo "Folder already exists"

if not exist C:\VTS\NUL echo "Folder does not exist"

Смотрите также https://support.Microsoft.com/en-us/kb/65994

(Обновление от 7 марта 2018 года; статья Microsoft недоступна, архив https://web.archive.org/web/20150609092521/https://support.Microsoft.com/en-us/kb/65994 )

196
Martin Schapendonk

Просто позвоните mkdir C:\VTS несмотря ни на что. Он просто сообщит, что подкаталог уже существует.

Редактировать: Как уже отмечали другие, это устанавливает% ERRORLEVEL%, если папка уже существует. Если ваш пакет (или любой вызывающий его процесс) не заботится об уровне ошибок, этот метод работает хорошо. Поскольку в вопросе не упоминалось о том, как избежать уровня ошибок, этот ответ является совершенно верным. Он удовлетворяет потребности создания папки, если она не существует, и не перезаписывает содержимое существующей папки. В противном случае следуйте ответ Мартина Шапендонка .

50
Agent_9191
mkdir C:\VTS 2> NUL

создайте папку с именем VTS и выведите A subdirectory or file TEST already exists в NUL.

или же

(C:&(mkdir "C:\VTS" 2> NUL))&

измените букву диска на C:, mkdir, выведите ошибку на NUL и выполните следующую команду.

35
3years2late
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
29
Robie

Я использую этот способ, вы должны поставить обратную косую черту в конце имени каталога чтобы избежать того, что место существует в файле без расширения с тем же именем, что и указанный вами каталог, никогда не используйте "C:\VTS" поскольку файл может существовать с именем "VTS" сохранен в разделе "C:", правильный способ - "C:\VTS \", проверьте обратную косую черту после VTS, так что это правильный путь.

@echo off
@break off
@title Create folder with batch but only if it doesn't already exist - D3F4ULT
@color 0a
@cls

setlocal EnableDelayedExpansion

if not exist "C:\VTS\" (
  mkdir "C:\VTS\"
  if "!errorlevel!" EQU "0" (
    echo Folder created successfully
  ) else (
    echo Error while creating folder
  )
) else (
  echo Folder already exists
)

pause
exit
15
D3F4ULT

Ты можешь использовать:

if not exist "C:\VTS\" mkdir "C:\VTS"

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

if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
15
user5628226

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

:CREATES A CHECK VARIABLE

set lookup=0

:CHECKS IF THE FOLDER ALREADY EXIST"

IF EXIST "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" (set lookup=1)

:IF CHECK is still 0 which means does not exist. It creates the folder

IF %lookup%==0 START "" mkdir "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\"
0
Winston