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

Создать папку с пакетом, но только если она еще не существует
На чтение
13 мин.
Просмотров
17
Дата обновления
11.11.2024

Кто-нибудь может сказать мне, как сделать следующее в пакетном скрипте 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 "  



0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий