首页 文章

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

提问于
浏览
353

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

  • 仅在文件夹尚不存在时创建

更详细地说,我想在 C:\ 驱动器上创建一个名为 VTS 的文件夹,但是只有当该文件夹不存在时才会覆盖该文件夹的内容(如果该文件夹已存在且已执行批处理) .

9 回答

  • 46
    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日; Microsoft文章已关闭,存档于https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994

  • 497

    无论如何,只需致电 mkdir C:\VTS . 它只会报告该子目录已存在 .

    Edit: 正如其他人所说,如果文件夹已存在,则会设置%ERRORLEVEL% . 如果您的批处理(或任何调用它的进程)不存在,并且它不会覆盖现有文件夹的内容 . 否则请按照Martin Schapendonk's answer .

  • 12

    试试这个

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

    此批处理将创建一个新文件夹并将其名称设置为当前日期 . (03222013)然后它会将 C:\Users\ADMIN\Pictures 文件夹中的所有文件移动到新创建的文件夹中 .

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

    只会移动 C:\Users\ADMIN\Pictures 中的文件 . 不会触及 C:\Users\ADMIN\Pictures 中的任何文件夹 .

  • 27
    mkdir C:\VTS 2> NUL
    

    创建一个名为 VTS 的文件夹,并将 A subdirectory or file TEST already exists 输出到 NUL .

    要么

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

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

  • 0

    您可以使用:

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

    您还可以展开代码以替换任何缺少的预期文件 .

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

    我为我的脚本创建了这个我用于眼睛的工作 .

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

    你只需使用它: if not exist "C:\VTS\" mkdir C:\VTS 它只有在文件夹不存在时才会创建一个目录 .

    请注意,只有VTS存在并且是目录时,此存在测试才会返回true . 如果它不存在,或者作为文件存在,则mkdir命令将运行,并且应该导致错误 . 您可能还想检查VTS是否也作为文件存在 .

  • 12

    我用这种方式,你应该 put a backslash at the end of the directory name 以避免那个地方存在于没有扩展名的文件中,与你指定的目录同名,永远不要使用 "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
    
  • -4
    set myDIR=LOG
    IF not exist %myDIR% (mkdir %myDIR%)
    

相关问题