Кто-нибудь может сказать мне, как сделать следующее в пакетном скрипте Windows? ( *.bat
):
- Создать папку, только если она еще не существует
Более подробно, я хочу создать папку с именем VTS
на C:\
диске, но только если эта папка еще не существует. Я не хочу перезаписывать содержимое папки, если она уже существует и пакет выполняется.
windows
batch-file
cmd
Билл
источник
источник
if not exist "%Folder%" mkdir "%New-Folder%"
Ответы:
Вы просто используете это:
if not exist "C:\VTS\" mkdir C:\VTS
он создаст каталог, только если папка не существует.Обратите внимание, что этот тест на существование вернет true, только если VTS существует и является каталогом. Если его там нет или он есть в виде файла, команда mkdir будет запущена и должна вызвать ошибку. Возможно, вы захотите проверить, существует ли VTS в виде файла.
источник
NUL
тоже.if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
. Что касается вашего последнего предложения, я подозреваю, что что-то не так с вашим командным файлом в другом месте.Смотрите также 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 )
источник
NUL
с одним Л.Просто позвони,
mkdir C:\VTS
несмотря ни на что. Он просто сообщит, что подкаталог уже существует.Редактировать: Как уже отмечалось, это устанавливает% ERRORLEVEL%, если папка уже существует. Если ваш пакет (или любой вызывающий его процесс) не заботится об уровне ошибок, этот метод работает хорошо. Поскольку в вопросе не упоминалось о том, как избежать уровня ошибок, этот ответ является совершенно верным. Он удовлетворяет потребности создания папки, если она не существует, и не перезаписывает содержимое существующей папки. В противном случае следуйте ответу Мартина Шапендонка .
источник
создайте папку с именем
VTS
и выведитеA subdirectory or file TEST already exists
вNUL
.или
измените букву диска на
C:
,mkdir
выведите ошибкуNUL
и выполните следующую команду.источник
NUL
в качестве выходного файла.источник
log
. Это небольшая разница, но она приведет к трудным для поиска ошибкам в ваших скриптах.Я использую этот способ, вы должны поставить обратную косую черту в конце имени каталога, чтобы избежать того, что место существует в файле без расширения с тем же именем, что и указанный вами каталог, никогда не используйте «C: \ VTS», потому что это может файл существует с именем «VTS», сохраненным в разделе «C:» , правильный способ - использовать «C: \ VTS \» , проверить обратную косую черту после VTS , так что это правильный путь.
источник
!errorlevel!
, то есть отложенное расширение. В противном случае переменнаяERRORLEVEL
будет проанализирована до ввода первогоif
(т. Е. Во время разбора). Теперь он анализируется во время выполнения, поэтому он может захватить результатmkdir
. Вы также правы в этом, даже если вы проверяете на существование, вы все равно должны проверять на успех (например, подумайте: ошибка доступа запрещена). Очень хорошее решение по сравнению с другими, +10 !!!Ты можешь использовать:
Вы также можете расширить код, чтобы заменить любые отсутствующие ожидаемые файлы.
источник
я создал это для своего сценария, который я использую в своей работе для глазного луча.
источник