您的位置:首页 > 其它

学习笔记 - 批处理3

2015-06-04 11:02 204 查看
for

/d

@echo off
::显示目录
::cd /d 某目录 /d是直接到某个目录  没有这句话就是在当前目录下去执行
for /d %%i in (*) do (  ::(s*)表示s开头文件夹
echo %%i
)
pause
::删除目录
for /d %%i in (*) do (
rd /S /Q %%i    ::如果文件夹有空格则需要加双引号
)
pause


/l

@echo off
::显示目录
::cd /d 某目录 /d是直接到某个目录  没有这句话就是在当前目录下去执行
for /d %%i in (*) do (  ::(s*)表示s开头文件夹
echo %%i
)
pause
::删除目录
for /d %%i in (*) do (
rd /S /Q %%i    ::如果文件夹有空格则需要加双引号
)
pause


/r

@echo off
::枚举(显示)当前目录的文件
for /r %%i in (*) do (
echo %%i
)
pause
::指定目录来枚举(显示)文件
for /r "D:\代码存放\批处理文件(bat,cmd)\for命令\" %%i in (*.bat) do (
echo %%i
)
pause
for /r %%i in (t*.*) do (
del "%%i"
echo 已删除
)
pause


/f

TEXT.txt

01 02 03
11 12 13
21 22 23
31 32 33
41 42 43


TEXT22222.txt

.01 02 03
11 12 13
.21 22 23
.31 32 33
41 42 43


@echo off
echo -----1
for /f %%i in (TEST.txt) do (
echo %%i
)
echo -----2
for /f "delims=" %%i in (TEST.txt) do (
echo %%i
)
echo -----3
for /f "delims=*" %%i in (TEST.txt) do (
echo %%i
)
echo -----4
for /f "delims= " %%i in (TEST.txt) do (
echo %%i
)
echo -----5
for /f "tokens=2 delims= " %%i in (TEST.txt) do (
echo %%i
)
echo -----6
for /f "tokens=2-3 delims= " %%i in (TEST.txt) do (
echo %%i %%j
)
echo -----7
for /f "tokens=2,3 delims= " %%i in (TEST.txt) do (
echo %%i %%j
)
echo -----8
for /f "tokens=2,* delims= " %%i in (TEST.txt) do (
echo %%i %%j
)
echo -----9
for /f "tokens=2-* delims= " %%i in (TEST.txt) do (
echo %%i %%j
)
echo -----10
for /f "tokens=* delims= " %%i in (TEST.txt) do (
echo %%i
)
::skip就是要忽略文件的前多少行,而eol用来指定当一行以什么符号开始时,就忽略它。
echo -----11
for /f "skip=2 tokens=*" %%i in (TEST.txt) do (
echo %%i
)
echo -----12
for /f "skip=2" %%i in (TEST.txt) do (
echo %%i
)
echo -----13
for /f "eol=. tokens=*" %%i in (TEST22222.txt) do (
echo %%i
)
pause


拓展

TEST3.txt

"1111
2222"
"3333"
44"44


TEST44444.txt

c:\windows
c:\windows\system32
c:\windows\fuck
c:\windows\you


@echo off
echo ~I          删除任何引号("),扩展 %I
echo 1、若字符串首尾同时存在引号,则删除首尾的引号;
echo 2、若字符串尾不存在引号,则删除字符串首的引号;
echo 3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。
for /f "delims=" %%i in (TEST3.txt) do (
echo %%~i
)
echo ~fI         将 %I 扩展到一个完全合格的路径名
for /f "delims=" %%i in ('dir /b') do (
echo %%~fi
)
echo.
for /f "delims=" %%i in ('dir') do (
echo %%~fi
)
echo.
for /f "delims=" %%i in ('dir /b') do (
echo %%i
)
echo.
for /f "delims=" %%i in ('dir') do (
echo %%i
)
echo ~dI         仅将 %I 扩展到一个驱动器号
for /f "delims=" %%i in ('dir /b') do (
echo %%~di
)
echo ~pI         仅将 %I 扩展到一个路径
for /f "delims=" %%i in ('dir /b') do (
echo %%~pi
)
echo ~nI         仅将 %I 扩展到一个文件名
for /f "delims=" %%i in ('dir /b') do (
echo %%~ni
)
echo ~xI         仅将 %I 扩展到一个文件扩展名
for /f "delims=" %%i in ('dir /b') do (
echo %%~xi
)
echo ~sI         扩展的路径只含有短名
for /f "delims=" %%i in ('dir /b') do (
echo %%~si
)
echo ~aI         将 %I 扩展到文件的文件属性
for /f "delims=" %%i in ('dir /b') do (
echo %%~ai
)
echo ~tI         将 %I 扩展到文件的日期/时间
for /f "delims=" %%i in ('dir /b') do (
echo %%~ti
)
echo ~zI         将 %I 扩展到文件的大小
for /f "delims=" %%i in ('dir /b') do (
echo %%~zi
)
echo ~$PATH:I    查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串
for /f "delims=" %%i in (TEST44444.txt) do (
echo %%~$PATH:i
)
echo 我们直接在CMD里输入echo 百分号path百分号, 会显示系统的path环境变量.
echo %%~$PATH:i也就是在文本里寻找匹配这个PATH变量值的内容,如果里面的内容和PATH变量相同,就打印出来.
echo 如果不相同,就显示一个空行!只能适用于PATH变量,其他变量不行,如果要比较很多值,可尝试把值赋予给PATH变量.
pause


截取字符串例子

::为了说明这个问题,我在这里把批处理取字符,做下进一步的解释
::如下:
::echo %var:~n,k%
::我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
::符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:::指针和偏移地址都是从零开始数的)
::我们还是用namejm版主的例子做下说明:
@echo off
set str=123456789
rem 定义一个str字符串为123456789
echo 第一个字符为:%str:~0,1%
rem 指针为0,偏移地址为1,即从第0位开始,取1位
echo 头两个字符为:%str:~0,2%
rem 指针为0,偏移地址为2,即从第0位开始,取2位
echo 头5个字符为:%str:~0,5%
rem  指针为0,偏移地址为5,即从第0位开始,取5位
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去
后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符
为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
rem  该句解释同上↑
echo 最后一个字符为:%str:~-1%
rem  参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部
echo 倒数第4个及其之后的字符为:%str:~-4%
rem        解释同上↑
echo 最后一个字符为:%str:~-1,1%
rem  n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数)
echo 最后一个字符为:%str:~-1,2%
rem  解释同上↑
echo 倒数第4个字符为:%str:~-4,1%
rem  解释同上↑
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
rem  解释同上↑
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
rem 解释同上↑
pause
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  批处理 bat cmd for