创建文件夹与批处理,但只有当它不&#39

有人能告诉我如何在Windows批处理脚本中执行以下操作吗?(# EYZ0):

  • 仅在文件夹不存在时才创建该文件夹

更详细地说,我想在C:\驱动器上创建一个名为VTS的文件夹,但前提是该文件夹还不存在。如果该文件夹已经存在并且批处理已经执行,我不想覆盖该文件夹的内容。

848886 次浏览
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

(2018年3月7日更新;微软文章被删除,存档在https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994)

不管怎样,只要调用mkdir C:\VTS即可。它只会报告子目录已经存在。

正如其他人注意到的,如果文件夹已经存在,这将设置%ERRORLEVEL%。如果批处理(或调用它的任何进程)不关心错误级别,则此方法工作得很好。由于问题没有提到避免错误级别,这个答案是完全有效的。如果文件夹不存在,它可以满足创建该文件夹的需要,并且它不会覆盖现有文件夹的内容。否则,请遵循Martin Schapendonk的回答是

我为我的脚本创建了这个,我在我的工作中使用的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\"
mkdir C:\VTS 2> NUL

创建一个名为VTS的文件夹,并输出A subdirectory or file TEST already existsNUL

(C:&(mkdir "C:\VTS" 2> NUL))&

修改驱动器号为C:mkdir,输出error为NUL,然后执行下一个命令。

你只需使用这个:if not exist "C:\VTS\" mkdir C:\VTS,它只会在文件夹不存在的情况下创建一个目录。

注意,只有当VTS存在并且是一个目录时,这个存在性测试才会返回true。如果它不存在,或者以文件的形式存在,则将运行mkdir命令,并将导致错误。您可能还想检查VTS是否作为文件存在。

我使用这种方式,你应该在目录名的末尾加一个反斜杠,以避免这个地方存在于一个没有扩展名的文件中,与你指定的目录同名,永远不要使用“C: \管理系统”,因为它可以存在一个名为“变形”的文件,保存在“C:“分区中,正确的方法是使用“C: \ 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
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)

你可以使用:

if not exist "C:\VTS\" mkdir "C:\VTS"

您还可以展开代码以替换任何丢失的预期文件。

if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"

这应该对你有用:

IF NOT EXIST "\path\to\your\folder" md \path\to\your\folder

然而,还有另一种方法,但它可能不是100%有用:

md \path\to\your\folder >NUL 2>NUL

该命令创建文件夹,但如果文件夹存在,则不显示错误输出。我强烈建议您使用第一个。第二个是如果你和另一个有问题。

你需要创建一个文件夹,如果它不存在?这里有一个如何做的例子。

首先,我通过输入以下代码检查文件夹是否已经存在:

if not exist "FOLDERPATH" (
mkdir "FOLDERPATH"
)

如果我运行代码。如果文件夹已经存在,它将什么都不做。如果文件夹已经存在,我们会这样做:

if exist "FOLDERPATH" (
rmdir /s /q "FOLDERPATH"
mkdir "FOLDERPATH"
)

现在如果我运行代码,它将重新创建文件夹,如果它已经存在。这是示例代码:

@echo off
cls


if not exist "C:\ExamplePath\" (
echo Creating Folder...
mkdir "C:\ExamplePath\"
pause
)


if exist "C:\ExamplePath\" (
echo Re-Creating Folder...
rmdir /s /q "C:\ExamplePath"
pause
)

现在if exist部分是可选的。如果文件夹已经存在,你可以跳转到一个标签,像这样:

if exist "FOLDERPATH" (
goto :ExampleLabel
    

:ExampleLabel
echo Hi.
pause
)

希望这能帮助你解决问题。

就我个人而言,我会这样做:

if not exist "C:\YourFolderPathHere\" (
mkdir C:\YourFolderPathHere\
) else (
echo Folder already exists!
)

让我们来分析一下:

  1. if not exist "C:\YourFolderPathHere\":检查文件夹。路径后面的反斜杠(\)非常重要,否则它将查找文件而不是文件夹。
  2. mkdir C:\YourFolderPathHere\:如果上述语句为真,则创建目录。
  3. echo Folder already exists!:打印到控制台,显示它已经存在。

下面是相同的代码,但是带有注释:

::Does the folder exist?
if not exist "C:\YourFolderPathHere\" (
::No, make it.
mkdir C:\YourFolderPathHere\
) else (
::Yes, don't make it, and print text.
echo Folder already exists!
)
< p >单行版: # EYZ0 < / p >

不过还没有测试过,所以不要引用我的话。