cmd 备忘

来源:互联网 发布:重庆seo外包公司费用 编辑:程序博客网 时间:2024/05/18 04:01

1.删除svn目录

for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q"%%a\.svn"

2.重名名文件

for /F "tokens=1 delims=." %i in ('dir /A:-D /S /B') do move"%i.doc" "%i.txt"

"delims=."  按.分割成2列

tokens=1   取第一列 给%i

3.

for /F "tokens=*" %i in ('dir /A:-D /S /B') do move "%i""%i.txt"

 

 

For /f”

一句话总结:解析文本,读取字符串。

 

Delims的语法:

FOR /F  "Delims=符号集"  %%I       IN (Command1)   DO Command2

一句话总结:忽略分隔符,切分字符串。

 

delims的意义包括两个方面:

第一、指定原文中的标点符号作为分隔符。使得文本被划分为许多小部分,方便使用批处理命令读取和编辑。

第二、读取第一个分隔符之前的内容。忽略第一个分隔符和分隔符后面的内容,如需读取和编辑,需要使用tokens等命令。

 

注意分隔符和标点符号的联系和区别。

分隔符就是原文中的标点符号,可以是一个标点符号也可以是多个。但原文中的标点符号不一定是分隔符。并且分隔符不一定是标点符号,字母和中文也是可以用作分隔符的。

分隔符需要定义,即用”delims=”来指定,等于号后面跟被用来做分隔符的标点符号,该标点符号来自原文。

当有多个标点符号被定义为分隔符时,标点符号之间没有空格。当用空格做分隔符时,空格应该放在其它用作分隔符的标点符号之后。

即使不使用delims,默认情况下,批处理也将空格作为分隔符。如文件名“ProgramFiles”中含有空格时,批处理一般只读取空格前的“Program”,剩下的“Files”被忽略了。

例:

代码9:空格默认作为分隔符

@echooff

for/f "delims=" %%a in ("伟大的中国人民万岁 万岁 万万岁") do echo%%a

pause>nul

运行结果:

伟大的中国人民万岁 万岁万万岁

讲解:

“delims=”等号后面没有空格,代表取消默认以空格作为分隔符,相当于“tokens=*”,提取全部字符;等号后面有空格时表示定义空格为分隔符,此时delims可以省略。

批处理默认空格是分隔符,分隔符会隐藏第一个分隔符后面的所有内容。为了显示完整的信息,所以有必要取消该功能。

因此,当文件名或路径中含有空格时,需要用双引号括住。如果不使用双引号,括号内的内容将被当做文件名,如果文件名不存在,将提示“系统找不到……”。

如果不使用“delims=”,即使使用双引号,也只能显示第一个空格前面的字符串,后面的字符串将被默认忽略。

 

 

Tokens的语法:

FOR /F  "tokens=x,y,m-n"  %%I       IN (Command1)   DO Command2

一句话总结:提取列。

 

Tokens的意义就是,提取指定的列。

注意列与句的联系与区别。

文本内容由许多文字字符串组成,它们被标点符号分隔,两个标点符号之间的语句我们称为“句子”。

当标点符号被“tokens=”指定为分隔符之后,文字将被分成多个部分。对应的每行的每个部分我们称之为“列”。

一列可能是一个句子,也可能包含多个句子,视delims定义的标点符号而定。

其它方面:关于“行”的提取,前面做过一个很简单的:
    @echooff
    del_test.txt
    set /pp=请输入要文本路径:
    findstr /n.* %p%>>_test.txt
    set /pm=请输入要定位的行:
    echo.
    for /f"tokens=1,* delims=:" %%a in ('findstr/b  "%m%"   _test.txt') do if%%a==%m% echo %%b
    echo.
pause

原创粉丝点击