批处理命令解释

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:44:41
for /f "delims=" %%i in ('dir /a:d /b "E:\test"') do (
set "n=%%i"
if "%%i"=="!n:~0,1!" if exist "E:\test\%%i\test.txt" (
set /a num+=1
------------------------
1、'dir /a:d /b "E:\test"',括号中的这句是什么意思?’’等符号何意?有比这句更简单吗?
2、if "%%i"=="!n:~0,1!" 中的!n:~0,1!" 什么意思?感叹号何意?

1.'dir /a:d /b "E:\test"'

dir命令查看e:\test下的目录.
/ad是指查看目录.
/b是指使用空格式列出来,也就是只列出文件夹名称.
具体用法cmd下输入dir/?可以查看到.
用''括起来则是for /f命令的格式.如若()内的是命令的话就要用''括起来.

2.
set "n=%%i" >赋变量n的值为%%i(也就是文件夹名称)
!n:~0,1!也就是取变量!n!的第一位字符.0是指从0位取走,1是指向后取一个字符.那!n:~0,1!的值也就是只有一个字符.
if "%%i"=="!n:~0,1!"
如果变量%%i(也就是dir命令列出来的每个目录名)等于"!n:~0,1!"(一个字符),则执行后面的命令.也就是如果列出来的目录名称只是一位数的话.则*******

!!中的变量,是因为开启了延迟变量.setlocal enabledelayedexpansion
开启延迟变量后,%%变量要用!!来表示.
具体延迟变量的意思看这个:http://www.cn-dos.net/forum/viewthread.php?tid=28273