Board logo

标题: [文本处理] [已解决]批处理如何将指令输出结果设为%变数%? [打印本页]

作者: strong12345    时间: 2009-2-11 18:35     标题: [已解决]批处理如何将指令输出结果设为%变数%?

小弟想用 dir /b 的输出结果(列出文件夹内所有档案)
设为一变数%dir_list%

然后对此变数进行处理

例如 在某文件夹内 有 1.txt , 2.jpg , 3.mp3  3个档案

使用 dir /b 指令 将会输出
  1. 1.txt
  2. 2.jpg
  3. 3.mp3
复制代码
小弟希望能够将此变数设为
  1. dir_list=1.txt 2.jpg 3.mp3
复制代码
可是我怎么试都不成功
  1. set "dir_list=%dir /b%"    →不成功
  2. set "dir_list=%dir%"        →不成功
  3. 但是
  4. set "today =%date%"     →成功   
复制代码
请问为什么?
作者: 随风    时间: 2009-2-11 18:58

看来楼主不是一般的不懂啊?
dir 是个命令,而不是变量,你这样当然是不成功的了,而 date 是一个系统变量,所以成功。
  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
复制代码
只是你这样作,若文件太多的话,变量的结果会很长,不如将你的最终目的说出来,大家帮你想想办法?
作者: batman    时间: 2009-2-11 19:02

这就要用到for的遍历机制了:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b') do call,set "dir_list=%%dir_list%% %%~nxa"
  3. echo %dir_list%&pause>nul
复制代码

作者: batman    时间: 2009-2-11 19:04

我晕,发了才知道随风兄已经回复了,呵呵。
作者: strong12345    时间: 2009-2-11 20:59

恩 谢谢楼上大大的回覆
小弟知道"指令" 和 "变量" 的差别
我也一直不知道"指令"该怎么宣告
因为小弟看到一个范例用到 %date%
而小弟记得 date 是 指令  不是  变量

因此 小弟就实际去cmd里  输入 set date  
结果显示  环境变数date未定义
因此小弟就一直以为 %% 除了用在变量外,也能用在指令     @_@"

不过为啥 %date%可用
却又 环境变数date未定义?
作者: strong12345    时间: 2009-2-12 12:09


小弟知道了
输入 set /?
最底部  有说明上述情形
作者: namejm    时间: 2009-2-12 13:36

  从变量的存活期来看,变量可分两种:
  一种是永久性变量,是系统已经定义好了的,也称为环境变量,在CMD窗口中输入 set 命令,可以看到有很多形如“SystemRoot=C:\WINDOWS”之类的信息,其中,等号前面的部分就是环境变量,等号后面的是环境变量的具体值;这些变量都可以直接引用而无需再由用户定义;当然,set 罗列出来的系统变量只是一部分,还有一部分变量引用可以通过 set /? 查到,比如我们常用的%cd%、%date%、%time%,这些变量引用很有趣:脱掉马甲(百分号对),它们就是命令;套上百分号对,它们可以直接作为变量加以引用。
  另一种就是临时性变量,通过 set 变量名=变量值 的格式来指定,如 set str=abc,其中,str是临时变量的名,abc是临时变量的值。

  而 set 字符串 的格式,其功能是:在当前变量空间中,查找所有以字符串打头的那些变量,并把变量名和变量值罗列出来。
作者: Batcher    时间: 2009-2-12 20:33

set 字符串 的格式,其功能是:在当前变量空间中,查找所有以字符串打头的那些变量,并把变量名和变量值罗列出来。

而且显示的结果是经过排序(ASCII)的,利用这一特性,可以实现一些很酷的效果。
作者: dxwi    时间: 2012-12-27 11:54

为什么还要"call”?我试了下,不"call"也可以呀! 还有batman的怎么还有一个“,”空格就可以了吧?
请高手指点,先谢谢啦!
for /f "delims=" %%a in ('dir/b') do call set dir_list=%%dir_list%% %%a




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