Board logo

标题: 批处理for之所有句型等 [打印本页]

作者: taojunyi    时间: 2009-2-4 13:39     标题: 批处理for之所有句型等

@echo off
::==============基本用法==================================
::当括号中的内容为路径时可列出指定位置下所有文件(带路径)(不含子文件夹中的文件),否则当作集合处理循环列出各项值,空格、跳格、逗号、分号为其分隔符。
::for %%i in (C:\WINDOWS\Help\*) do echo %%i
::for %%i in (www,mzwu,com) do echo %%i
::for %%i in (1;1;10) do echo %%i
::==============/d=============================================
::说明:此命令可以列出指定位置下的所有文件夹(带路径)(不含子文件夹),支持通配符。
::for /d %%i in (C:\WINDOWS\Help\*) do echo %%i
::==============/r==============================================
::列出指定位置及其子文件夹下的所有文件(带路径),支持通配符。
::for /r C:\WINDOWS\Help\ %%i in (*.*) do echo %%i
::==============/l==============================================
::转换成C#语句为for(int i=start;i<=end;i+=step),转换成VB语句为for i=start to end step step。
::for /l %%i in (10,-1,1) do echo %%i
::==============/f==============================================
::列出test.txt中每行内容
::for /f "delims=" %%i in (test.txt) do echo %%i  
::从字符串中提取出"木子屋"
::for /f "delims=_ tokens=2" %%i in ("0100_木子屋") do echo %%i
::列出所有环境变量名称
::for /f "delims==" %%i in ('set') do echo %%i  
pause

补充
::一、for /r(查询文件)四种句型
::----------------------------------------------------------------
::1、枚举F:盘下所有的文件
:echo off
::for /r f:\ %%i in (*) do echo %%i
::pause>nul
::----------------------------------------------------------------
::2、枚举F:盘下所有的 .bat文件(包括子目录)
::@echo off
::for /r f:\ %%i in (*.bat) do echo %%i
::pause>nul
::----------------------------------------------------------------
::3、枚举当前目录中的所有批处理文件(包括子目录)
::@echo off
::for /r %%i in (*.bat) do echo %%i  %省略路径%
::pause>nul
::----------------------------------------------------------------
::4、如果集仅为一个单点(.)字符,则枚举该目录树。(这是特例)
::@echo off
::for /r f:\bat %%i in  (.) do echo %%i
::pause
::=============================================================
::=============================================================
::for /d查询文件夹(目录)二种句型
::----------------------------------------------------------------
::查询F盘根目录下的文件夹
::@echo off
::for /d %%i in (f:\*) do echo %%i
::pause>nul
::----------------------------------------------------------------
::查询当前目录中的文件夹(省略f:\)
::@echo off
::for /d %%i in (*) do echo %%i
::pause>nul

[ 本帖最后由 taojunyi 于 2009-2-4 14:07 编辑 ]
作者: Batcher    时间: 2009-2-4 17:17

所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;

Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: zjw767676    时间: 2009-2-4 21:23

  1. ::@echo off
  2. ::for /r f:\bat %%i in  (.) do echo %%i
  3. ::pause
复制代码
"."代表上一个目录为什么枚举本目录呢?
作者: wxcute    时间: 2009-2-4 21:46     标题: 回复 3楼 的帖子

.  一个点代表当前目录
.. 两个点才是上级目录(或父目录)
作者: irresolute    时间: 2009-3-13 12:13     标题: 补充for /f

1、for /f %%i in (文件名) do (……)
  2、for /f %%i in ('命令语句') do (……)
  3、for /f %%i in ("字符串") do (……)
  4、for /f "usebackq" %%i in ("文件名") do (……)
  5、for /f "usebackq" %%i in (`命令语句`) do (……)
  6、for /f "usebackq" %%i in ('字符串') do (……)
作者: lifahu    时间: 2009-3-13 12:58

for /r d:\ %i in (.) do @echo %i
for /r d:\ %i in (..) do @echo %i
运行结果好像是一样的
作者: Batcher    时间: 2009-3-13 13:04     标题: 回复 6楼 的帖子

因为你是从D盘根目录开始遍历的,你可以换个子目录试试,不要用根目录。
作者: sjzong    时间: 2009-4-13 22:07     标题: LZ辛苦!

学习ing! 思考ing




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2