Создать папку с пакетом, но только если она еще не существует
Может ли кто-нибудь сказать мне, как сделать следующее в пакете Windows script? (*.bat
):
- Создайте папку только в том случае, если она еще не существует.
Более подробно я хочу создать папку с именем VTS
на диске C:\
, но только если эта папка еще не существует. Я не хочу перезаписывать содержимое папки, если она уже существует, и пакет выполняется.
Ответы
Ответ 1
Вы просто используете это: if not exist "C:\VTS\" mkdir C:\VTS
он создаст каталог только в том случае, если папка не существует.
Обратите внимание, что этот тест существования вернет true, только если существует VTS и является каталогом. Если он отсутствует или находится в файле, команда mkdir будет запущена и должна вызывать ошибку. Возможно, вы захотите проверить, существует ли VTS как файл.
Ответ 2
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
Ответ 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
не будет затронута.