¿Alguien puede decirme cómo hacer lo siguiente en un script por lotes de Windows? ( *.bat
):
- Cree una carpeta solo si aún no existe
Con más detalle, quiero crear una carpeta nombrada VTS
en la C:\
unidad, pero solo si esa carpeta aún no existe. No quiero sobrescribir el contenido de la carpeta si ya existe y se ejecuta el lote.
windows
batch-file
cmd
Cuenta
fuente
fuente
if not exist "%Folder%" mkdir "%New-Folder%"
Respuestas:
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, se ejecutará el comando mkdir y debería provocar un error. Es posible que desee verificar si VTS también existe como un archivo.
fuente
NUL
.if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
. Acerca de su última oración, sospecho que algo está mal con su archivo por lotes en otro lugar.Consulte también https://support.microsoft.com/en-us/kb/65994
(Actualización 7 de marzo de 2018; el artículo de Microsoft está caído, archivar en https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994 )
fuente
NUL
está con una L.Simplemente llame
mkdir C:\VTS
sin importar qué. Simplemente informará que el subdirectorio ya existe.Editar: como otros han notado, esto establece el% ERRORLEVEL% si la carpeta ya existe. Si su lote (o cualquier proceso que lo llame) no se preocupa por el nivel de error, este método funciona bien. Dado que la pregunta no mencionaba cómo 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 .
fuente
crear una carpeta llamada
VTS
y salidaA subdirectory or file TEST already exists
aNUL
.o
cambie la letra de unidad a
C:
,mkdir
error de salida ayNUL
ejecute el siguiente comando.fuente
NUL
como un archivo de salida.fuente
log
. Es una diferencia sutil, pero dará lugar a errores difíciles de encontrar en sus scripts.Lo uso de esta manera, debe colocar una barra diagonal inversa al final del nombre del directorio para evitar que ese lugar exista en un archivo sin extensión con el mismo nombre que el directorio que especificó, nunca use "C: \ VTS" porque puede contener 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 del VTS , así que es la forma correcta.
fuente
!errorlevel!
, es decir, la expansión retrasada. De lo contrario, la variableERRORLEVEL
se analizaría antes de ingresar la primeraif
(es decir, en el momento del análisis). Ahora se analiza en tiempo de ejecución, por lo que puede capturar el resultado demkdir
. También tiene razón en eso, a pesar de que prueba la existencia, aún debe probar el éxito (piense: error de acceso denegado, por ejemplo). Muy buena solución en comparación con los demás, +10 !!!Puedes usar:
También puede expandir el código para reemplazar los archivos esperados que faltan.
fuente
Creé esto para mi script que uso en mi trabajo para eyebeam.
fuente