任何人都可以告诉我如何在Windows批处理脚本中执行以下操作? ( *.bat
):
- 仅当文件夹尚不存在时才创建它
更详细地说,我想在C:\\
驱动器上创建一个名为VTS
的文件夹,但前提是该文件夹尚不存在。 我不想覆盖文件夹的内容(如果它已经存在并且执行批处理)。
#1楼
试试这个
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
任何文件夹。
#2楼
我为我的脚本创建了这个我用于眼睛的工作。
: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\"
#3楼
mkdir C:\VTS 2> NUL
创建一个名为VTS
的文件夹并输出A subdirectory or file TEST already exists
于NUL
。
要么
(C:&(mkdir "C:\VTS" 2> NUL))&
将驱动器号更改为C:
, mkdir
,将输出错误更改为NUL
并运行下一个命令。
#4楼
你只需使用它: if not exist "C:\\VTS\\" mkdir C:\\VTS
它只有在文件夹不存在时才会创建一个目录。
请注意,只有VTS存在并且是目录时,此存在测试才会返回true。 如果它不存在,或者作为文件存在,则mkdir命令将运行,并且应该导致错误。 您可能想要检查VTS是否也作为文件存在。
#5楼
我使用这种方式,你应该在目录名的末尾添加一个反斜杠,以避免该文件存在于没有与你指定的目录同名的扩展名的文件中,从不使用“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
#6楼
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
#7楼
您可以使用:
if not exist "C:\VTS\" mkdir "C:\VTS"
您还可以展开代码以替换任何缺少的预期文件。
if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
#8楼
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 )
#9楼
只要调用mkdir C:\\VTS
无论如何。 它只会报告该子目录已存在。
编辑:正如其他人所说,如果文件夹已存在,则会设置%ERRORLEVEL%。 如果您的批处理(或任何调用它的进程)不关心错误级别,则此方法可以很好地工作。 由于问题没有提到避免错误级别,这个答案是完全有效的。 它满足创建文件夹(如果它不存在)的需要,并且它不会覆盖现有文件夹的内容。 否则请按照Martin Schapendonk的回答 。