bat 判斷文件夾是否為空


bat 中,有時候,我們需要文件夾操作之前,希望知道文件夾是否問空,如果為空,就沒必要執行后續操作,我的bat腳本如下:

 

@echo off
setlocal ENABLEDELAYEDEXPANSION    
set "dir_flag="
for /F %%s in ( 'dir /B target' ) do ( set dir_flag=%%s )
if "!dir_flag!" == "" ( 
echo target dir is null
exit 0
)else (
echo target dir not null
)

關於上述腳本的解讀如下:

setlocal ENABLEDELAYEDEXPANSION    是設置環境變量延遲生效,主要是后面的for中使用和后面的!dir_flag!變量的讀取,關於環境變量延遲,請自行百度
set "dir_flag="    設置初始值為空,如果你要設置初始值為0之類的,可以 set "dir_flag=0"
for /F %%s in ( 'dir /B target' ) do ( set dir_flag=%%s )  這是bat的命令賦值方式,將dir /B的執行結果復制給dir_flag,類似shell的dir_flag=`ls target`,
具體就是dir /B target執行后會顯示target文件夾下的文件名,如果有文件,那么dir_flag就不空,如果沒文件,就是空的,關於命令賦值的方式,可以參考我的另外的博客:

bat/cmd將命令執行的結果賦值給變量

if "!dir_flag!" == ""  這一句是判斷上面賦值的dir_flag是否為空
另外,exit 0這里是退出腳本,如果你使用的是函數,可以使用goto:eof退出函數。

上面腳本的執行結果如下:
(1)當target下有文件時:

 

 (2)當target下沒文件時

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM