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

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

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

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

Ответ 1

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

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

Ответ 3

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

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

Ответ 4

set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)

Ответ 5

mkdir C:\VTS 2> NUL

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

или

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

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

Ответ 6

Я использую этот способ, вы должны поместить обратную косую черту в конце имени каталога, чтобы избежать того, что это место существует в файле без расширения с тем же именем, что и указанный вами каталог, никогда не используйте "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

Ответ 7

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

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

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

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

Ответ 8

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

: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\"

Ответ 9

Попробуйте это

ROBOCOPY C:\Users\ADMIN\Pictures c:%date:~4,2%%date:~7,2%%date:~10,4% /MOV

Эта партия создаст новую папку и установит ее имя как текущую дату. (03222013) Затем он перемещает любые файлы в папке C:\Users\ADMIN\Pictures в эту вновь созданную папку.

Если сегодня 22 марта 2013 года.... Все файлы в C:\Users\ADMIN\Pictures будут перемещены в папку с именем 03222013.

Будут перемещены только файлы в C:\Users\ADMIN\Pictures. Любая папка в C:\Users\ADMIN\Pictures не будет затронута.