Alguém pode me dizer como fazer o seguinte em um script em lote do Windows? ( *.bat
):
- Crie uma pasta apenas se ela ainda não existir
Em mais detalhes, desejo criar uma pasta chamada VTS
na C:\
unidade, mas apenas se essa pasta ainda não existir. Não quero substituir o conteúdo da pasta, se ela já existir, e o lote for executado.
windows
batch-file
cmd
Conta
fonte
fonte
if not exist "%Folder%" mkdir "%New-Folder%"
Respostas:
Você apenas usa isto:
if not exist "C:\VTS\" mkdir C:\VTS
ele criará um diretório apenas se a pasta não existir.Observe que esse teste de existência retornará verdadeiro somente se o VTS existir e for um diretório. Se não estiver lá, ou como um arquivo, o comando mkdir será executado e deverá causar um erro. Convém verificar se o VTS também existe como um arquivo.
fonte
NUL
.if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
. Sobre sua última frase, suspeito que algo esteja errado com seu arquivo em lotes em outro lugar.Consulte também https://support.microsoft.com/en-us/kb/65994
(Atualização em 7 de março de 2018; Artigo da Microsoft em baixo, arquivo em https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )
fonte
NUL
is with one L.Basta ligar,
mkdir C:\VTS
não importa o quê. Ele simplesmente informa que o subdiretório já existe.Editar: como outros observaram, isso define o% ERRORLEVEL% se a pasta já existir. Se o seu lote (ou qualquer processo chamado) não se importar com o nível de erro, esse método funcionará bem. Como a pergunta não fez menção de evitar o nível de erro, esta resposta é perfeitamente válida. Ele atende às necessidades de criação da pasta, se ela não existir, e não substitui o conteúdo de uma pasta existente. Caso contrário, siga a resposta de Martin Schapendonk .
fonte
crie uma pasta chamada
VTS
e faça a saídaA subdirectory or file TEST already exists
paraNUL
.ou
alterar a letra de unidade para
C:
,mkdir
, erro de saída paraNUL
e executar o próximo comando.fonte
NUL
como um arquivo de saída.fonte
log
. É uma diferença sutil, mas levará a erros difíceis de encontrar nos seus scripts.Eu uso dessa maneira, você deve colocar uma barra invertida no final do nome do diretório para evitar que exista um local em um arquivo sem extensão com o mesmo nome que o diretório especificado, nunca use "C: \ VTS" porque pode ser um arquivo existe com o nome "VTS" salvo na partição "C:" , a maneira correta é usar "C: \ VTS \" , verifique a barra invertida após o VTS , assim é o caminho certo.
fonte
!errorlevel!
, ou seja, expansão atrasada. Caso contrário, a variávelERRORLEVEL
seria analisada antes de inserir a primeiraif
(ou seja, no momento da análise). Agora ele é analisado no tempo de execução, para capturar o resultado demkdir
. Você também está correto nisso, mesmo que teste a existência, ainda deve testar o sucesso (pense: erro de acesso negado, por exemplo). Solução muito boa em comparação com as outras, +10 !!!Você pode usar:
Você também pode expandir o código para substituir os arquivos esperados ausentes.
fonte
Eu criei isso para o meu script que eu uso no meu trabalho para eyebeam.
fonte