关于bat的问题

qqq123 2009-03-20 05:31:49
[code=BatchFile]
@echo off

set OBJS=k.o

for /f %%i in ('dir /b *.o') do (
set OBJS=%OBJS% %%i
)

echo %OBJS%

set OBJS=

@echo on
[/code]
假设当前目录有四个文件:a.o b.o c.o d.o
上面的批处理运行是:
k.o d.o
为什不是
k.o a.o b.o c.o d.o
这才是我要的结果,到底那出错了?



...全文
108 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqq123 2009-03-28
  • 打赏
  • 举报
回复
学习了“批处理变量延迟扩展”知道了可以有两种方法:
[code=BatchFile]
@echo off

set OBJS=k.o

setlocal enabledelayedexpansion

for /f %%i in ('dir /b *.o') do (
set OBJS=!OBJS! %%i
)

echo %OBJS%

set OBJS=
[/code]

[code=BatchFile]
@echo off

set OBJS=k.o

for /f %%i in ('dir /b *.o') do (
call set OBJS=%%OBJS%% %%i
)

echo %OBJS%

set OBJS=
[/code]

谢谢ljc007指点!

toiiggww 2009-03-23
  • 打赏
  • 举报
回复
引号,代表引起的东西是一块的,就这么简单,“批处理变量延迟扩展”可以忽略不计
ljc007 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qqq123 的回复:]
3楼是 正确结果。可是为什么呢?%variable% 和 %%variable%% 有什么区别?
[/Quote]
google搜索“批处理变量延迟扩展”
fairchild811 2009-03-21
  • 打赏
  • 举报
回复
%%variable 或 %variable

代表可替换的参数。for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)处理所有的文件为止。使用 %% variable 在批处理程序中执行 for 命令。使用 % variable 通过命令提示符执行 for 命令。变量名区分大小写。
qqq123 2009-03-21
  • 打赏
  • 举报
回复
3楼是 正确结果。可是为什么呢?%variable% 和 %%variable%% 有什么区别?
ljc007 2009-03-20
  • 打赏
  • 举报
回复
[code=BatchFile]@echo off
set OBJS=k.o
for /f "delims=" %%i in ('dir /b *.o') do (
call set "OBJS=%%OBJS%% %%i"
)
echo.%OBJS%
pause[/code]
toiiggww 2009-03-20
  • 打赏
  • 举报
回复
set OBJS=%OBJS% %%i=>
set OBJS="%OBJS% %%i"
qqq123 2009-03-20
  • 打赏
  • 举报
回复
自己up

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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