[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解決]批处理中call和set怎样合用?

小弟在之前發的一文中
版主大大們幫我解決了問題,並提供代碼
小弟在之前发的一文中
版主大大们帮我解决了问题,并提供代码
小弟常感谢

不过里面有句 call 和 set 合用的问题
想请教一下

因为小弟觉得这跟原本小弟问的问题性质不太相同,所以另外开了此帖发问

原代码:
  1. @echo off
  2. for /f "delims=" %%a in ('dir/b') do call set dir_list=%%dir_list%% %%a
  3. echo %dir_list%
  4. pause
复制代码
其中
  1. for /f "delims=" %%a in ('dir/b') do call set dir_list=%%dir_list%% %%a
复制代码
小弟并不是很理解
为什么可以这样使用指令?

set dir_list=%%dir_list%%  →为什么使用 %% 而不是 % ?
后面的 %%a 应该是 %1 的意思吧?
请问为什么这么做 可以把 %%a 的变数,一直加到 %dir_list%里?

小弟知道 set 和 call 的用法
不过2个 合在一起 这样使用 实在不太懂   @@a"
能不能请哪位大大
说明一下 这指令的流程?

[ 本帖最后由 strong12345 于 2009-2-13 20:29 编辑 ]

版主大大
小弟改成这样
  1. @echo off
  2. for /f %%a in ('dir /b') do (call set dir_list=%%dir_list%% %%a)
  3. set dir_list
  4. pause
复制代码
也能显示所有档案
但是小弟不懂为什么
  1. call set dir_list=%%dir_list%% %%a
复制代码
把变数dir_list设为自己  后面又接了一个 %%a ??

小弟目前知道的是∶
dir /b 指令输出  会变成%%a
不知道为什么%%a 又变成 %dir_list%

延迟变量部份已经懂了 谢谢

[ 本帖最后由 strong12345 于 2009-2-13 18:48 编辑 ]

TOP

小弟刚刚吃饭时,自己想想
终于想通了
刚刚做了个实验
  1. @echo off
  2. for /f %%a in ('dir /b') do (call set dir_list=%%dir_list%% %%a&set dir_list&pause)
  3. pause
复制代码

证实我想的没错

问题已解 ^_^

TOP

返回列表