使用批处理创build文件夹,但前提是它不存在

任何人都可以告诉我如何在Windows批处理脚本中执行以下操作? ( *.bat ):

  • 只有在文件夹不存在的情况下才能创build文件夹

更详细地说,我想在C:\驱动器上创build一个名为VTS的文件夹,但只有在该文件夹不存在的情况下。 如果文件夹已经存在并且批处理被执行,我不想覆盖这个文件夹的内容。

你只是使用这个: if not exist "C:\VTS\" mkdir C:\VTS它将创build一个目录只有当文件夹不存在。

请注意,只有存在VTS并且是一个目录,这个存在testing才会返回true。 如果不存在,或者作为文件存在,则mkdir命令将运行,并且应该导致错误。 您可能需要检查VTS是否作为文件存在。

 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

只要调用mkdir C:\VTS就可以了。 它只会报告该子目录已经存在。

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

 set myDIR=LOG IF not exist %myDIR% (mkdir %myDIR%) 
 mkdir C:\VTS 2> NUL 

创build一个名为VTS的文件夹并输出NUL A subdirectory or file TEST already exists

要么

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

将驱动器号更改为C:mkdir ,将输出错误更改为NUL然后运行下一个命令。

我使用这种方式,你应该在目录名的末尾加上一个反斜线,以避免这个地方存在于一个没有与你指定的目录名称相同的扩展名的文件中,而不是使用“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 

您可以使用:

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

您也可以展开代码以replace任何缺less的预期文件。

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

我为我的脚本创build了这个我用于眼镜工作的脚本。

 :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\" 

尝试这个

ROBOCOPY C:\Users\ADMIN\Pictures c:%date:~4,2%%date:~7,2%%date:~10,4% /MOV

该批次将创build一个新文件夹并将其名称设置为当前date。 (03222013)然后它会将C:\Users\ADMIN\Pictures文件夹中的任何文件移动到新创build的文件夹中。

如果今天是2013年3月22日…. C:\Users\ADMIN\Pictures所有文件都将被移到名为03222013的文件夹中。

只有C:\Users\ADMIN\Pictures才会被移动。 C:\Users\ADMIN\Pictures任何文件夹都不会被触摸。