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下没文件时

 
原文地址:https://www.cnblogs.com/zndxall/p/13957883.html