windows - start - Crea una carpeta con lote pero solo si no existe
start cmd (9)
Creé esto para mi script que uso en mi trabajo para 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/"
¿Alguien puede decirme cómo hacer lo siguiente en un script por lotes de Windows? ( *.bat
):
- Crea una carpeta solo si no existe
Más detalladamente, quiero crear una carpeta llamada VTS
en la unidad C:/
, pero solo si esa carpeta no existe. No quiero sobrescribir el contenido de la carpeta si ya existe y se ejecuta el lote.
Prueba esto
ROBOCOPY C:/Users/ADMIN/Pictures c:%date:~4,2%%date:~7,2%%date:~10,4% /MOV
Este lote creará una nueva carpeta y establecerá su nombre como la fecha actual. (03222013) A continuación, moverá los archivos de la carpeta C:/Users/ADMIN/Pictures
carpeta recién creada.
Si hoy es 22 de marzo de 2013 ... Todos los archivos en C:/Users/ADMIN/Pictures
se 03222013
a una carpeta llamada 03222013
.
Solo se moverán los archivos en C:/Users/ADMIN/Pictures
. No se tocará ninguna carpeta en C:/Users/ADMIN/Pictures
.
Puedes usar:
if not exist "C:/VTS/" mkdir "C:/VTS"
También puede expandir el código para reemplazar cualquier archivo esperado faltante.
if not exist "C:/VTS/important.file" echo. > "C:/VTS/important.file"
Simplemente llame a mkdir C:/VTS
lo que mkdir C:/VTS
. Simplemente informará que el subdirectorio ya existe.
Editar: Como otros lo han notado, esto establece el% ERRORLEVEL% si la carpeta ya existe. Si a su lote (o cualquier proceso que lo llame) no le importa el nivel de error, este método funciona bien. Dado que la pregunta no hizo mención de evitar el nivel de error, esta respuesta es perfectamente válida. Satisface las necesidades de crear la carpeta si no existe, y no sobrescribe el contenido de una carpeta existente. De lo contrario, siga la respuesta de Martin Schapendonk .
Simplemente use esto: if not exist "C:/VTS/" mkdir C:/VTS
, creará un directorio solo si la carpeta no existe.
Tenga en cuenta que esta prueba de existencia devolverá verdadero solo si VTS existe y es un directorio. Si no está allí, o está allí como un archivo, el comando mkdir se ejecutará, y debería causar un error. Es posible que desee comprobar si VTS también existe como un archivo.
Yo uso de esta manera, debe colocar una barra invertida al final del nombre del directorio para evitar que exista un lugar en un archivo sin extensión con el mismo nombre que el directorio que especificó, nunca use "C: / VTS" porque puede ser un archivo existe con el nombre "VTS" guardado en la partición "C:" , la forma correcta es usar "C: / VTS /" , verifique la barra invertida después de la VTS , así es la forma correcta.
@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
if exist C:/VTS/NUL echo "Folder already exists"
if not exist C:/VTS/NUL echo "Folder does not exist"
Consulte también https://support.microsoft.com/en-us/kb/65994
(Actualización del 7 de marzo de 2018; el artículo de Microsoft no está disponible, archivar en https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )
mkdir C:/VTS 2> NUL
crear una carpeta llamada VTS
y generar A subdirectory or file TEST already exists
en NUL
.
o
(C:&(mkdir "C:/VTS" 2> NUL))&
cambie la letra de la unidad a C:
mkdir
, el error de salida a NUL
y ejecute el siguiente comando.
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)