谁能帮忙解释下以下这段bat命令什么意思?

清钟沁桐 2011-05-20 09:30:08
for /r "%SOURCE_FILE%" %%i in (*.c) do (
set FileName=%%i
echo %COMPILER_DOING% "!FileName!" -o "!FileName:~0,-1!o" >>%PROJECT_PATH%\%PROJECT_NAME%_CompileCmdGen.bat
echo !FileName:~0,-1!o >>%PROJECT_PATH%\objfiles.list
echo @del /f /s !FileName:~0,-1!o >>%PROJECT_PATH%\delOut.bat

)
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
清钟沁桐 2011-06-01
  • 打赏
  • 举报
回复
另外,想问下 这里为什么只能使用 !FileName! 而不能使用 %FileName% 获取变量值呢 ?
fox000002 2011-05-22
  • 打赏
  • 举报
回复
!FileName:~0,-1!o 就是变量延迟展开

其实功能就是 FileName = xxx.c

经过替换后,将字符串最后一个字符替截去,再加上一个字符o

也就成了 xxx.o
清钟沁桐 2011-05-21
  • 打赏
  • 举报
回复
for /r c:\123 %%f IN (456.txt) Do del %%f
上面的FOR语句相当与下面的语句
cd c:\123
del 456.txt
清钟沁桐 2011-05-21
  • 打赏
  • 举报
回复
关键是 !FileName:~0,-1!o 什么意思 ?
fox000002 2011-05-20
  • 打赏
  • 举报
回复
脚本里使用了变量延迟展开,三句 echo 命令生成三个文件

1 生成编译命令文件

2 生成object文件列表

3 生成删除 object 文件的命令文件
清钟沁桐 2011-05-20
  • 打赏
  • 举报
回复
for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.

语法:

FOR %variable IN (set) DO command [command-parameters]

%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat

用for命令如下:

for %%t in (*.bat *.txt) do type %%t

%%t其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%%t就变成了*.bat *.txt了.do就是做的意思,执行type命令,而type后面是%%t,而%%t又是*.bat *.txt.所以原来这句命令的意思就变成了:

type *.bat *.txt

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧