Кто-нибудь может сказать мне, как сделать следующее в пакетном скрипте Windows? ( *. bat
):
- Создать папку, только если она еще не существует
Более подробно, я хочу создать папку с именем VTS
на диске C:
, но только если эта папка еще не существует . Я не хочу перезаписывать содержимое папки, если она уже существует и пакет выполняется.
Просто используйте это: , если не существует "C: VTS " mkdir C: VTS
, он создаст каталог, только если папка не существует.
Обратите внимание, что этот тест на существование вернет истину, только если VTS существует и является каталогом. Если его там нет или есть как файл, команда mkdir будет запущена и должна вызвать ошибку. Возможно, вы захотите проверить, существует ли VTS в виде файла.
5
если существует C: VTS NUL echo "Папка уже существует", если не существует C: VTS NUL echo "Папка не существует"
См. также 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)
11
Просто вызовите mkdir C: VTS
независимо от того, что . Он просто сообщит, что подкаталог уже существует.
Изменить: Как отмечали другие, это устанавливает% ERRORLEVEL%, если папка уже существует. Если ваш пакет (или вызывающие его процессы) не заботятся об уровне ошибки, этот метод работает нормально. Поскольку в вопросе не упоминалось об избежании уровня ошибки, этот ответ совершенно верен. Он удовлетворяет потребности в создании папки, если она не существует, и не перезаписывает содержимое существующей папки. В противном случае следуйте ответу Мартина Шапендонка.
8
mkdir C: VTS 2> NUL
создать папку с именем VTS
и вывести Подкаталог или файл TEST уже существует
на NUL
.
или
(C: & (mkdir "C: VTS" 2> NUL)) &
измените букву диска на C:
, mkdir
, выведите ошибку в NUL
и выполните следующую команду.
1
установить myDIR = LOGIF не существует% myDIR% (mkdir% myDIR%)
1
Я использую этот способ, вам следует поставить обратную косую черту в конце имени каталога , чтобы избежать этого места в файле без расширения с тем же именем, что и в указанном вами каталоге, никогда не используйте «C: VTS» , потому что он может существовать с файлом с именем «VTS» , сохраненным в Раздел «C:» , правильный способ — использовать «C: VTS » , проверьте обратную косую черту после VTS , так что это правильный путь.
@echo off @ break off @ title Создать папку с пакетом, но только если она еще не существует - D3F4ULT @ color 0a @ clssetlocal EnableDelayedExp ansionif не существует "C: VTS " (mkdir "C: VTS " if "! errorlevel!" EQU "0" (эхо-папка создана успешно) else (эхо-ошибка при создании папки)) else (эхо-папка уже существует ) pauseexit
1
Вы можете использовать:
если не существует "C: VTS " mkdir "C: VTS"
Вы также можете расширить код, чтобы заменить любые отсутствующие ожидаемые файлы.
если не существует "C: VTS important.file" echo. > "C: VTS important.file"
Это должно сработать для вас:
ЕСЛИ НЕ СУЩЕСТВУЕТ " path to your folder" md path to your folder
Однако есть другой метод, но он может быть не на 100% полезным:
md path to your folder> NUL 2> NUL
Создает папку, но не показывает вывод ошибки, если папка существует. Я настоятельно рекомендую вам использовать первый. Второй — если у вас проблемы с другим.
i создал это для моего скрипта, который я использую в своей работе для eyebeam.
: СОЗДАЕТ ПРОВЕРКУ ПЕРЕМЕННОЙ set lookup = 0: ПРОВЕРЯЕТ, ЕСЛИ ПАПКА УЖЕ СУЩЕСТВУЕТ "ЕСЛИ СУЩЕСТВУЕТ"% UserProfile% AppData Local CounterPath RegNow Enhanced default_user "(установить поиск = 1): IF CHECK по-прежнему равен 0, что означает, что не существует. Он создает папку IF% lookup% == 0 START "" mkdir "% UserProfile% AppData Local CounterPath RegNow Enhanced default_user "