有人能告诉我如何在Windows批处理脚本中执行以下操作吗?(*。bat):
仅在文件夹不存在时才创建该文件夹
更详细地说,我想在C:\驱动器上创建一个名为VTS的文件夹,但前提是该文件夹还不存在。如果该文件夹已经存在并且批处理已经执行,我不想覆盖该文件夹的内容。
有人能告诉我如何在Windows批处理脚本中执行以下操作吗?(*。bat):
仅在文件夹不存在时才创建该文件夹
更详细地说,我想在C:\驱动器上创建一个名为VTS的文件夹,但前提是该文件夹还不存在。如果该文件夹已经存在并且批处理已经执行,我不想覆盖该文件夹的内容。
当前回答
你可以使用:
if not exist "C:\VTS\" mkdir "C:\VTS"
您还可以展开代码以替换任何丢失的预期文件。
if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
其他回答
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
mkdir C:\VTS 2> NUL
创建一个名为VTS的文件夹,并输出一个子目录或文件TEST已经存在到NUL。
or
(C:&(mkdir "C:\VTS" 2> NUL))&
修改盘符为C:, mkdir, output error为NUL,执行下一个命令。
我为我的脚本创建了这个,我在我的工作中使用的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即可。它只会报告子目录已经存在。
编辑:正如其他人所注意到的,如果文件夹已经存在,这将设置%ERRORLEVEL%。如果批处理(或调用它的任何进程)不关心错误级别,则此方法工作得很好。由于问题没有提到避免错误级别,这个答案是完全有效的。如果文件夹不存在,它可以满足创建该文件夹的需要,并且它不会覆盖现有文件夹的内容。否则,请听马丁·沙潘顿克的回答。
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)