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

[新方法]批处理中把命令的结果赋值给变量

[新方法]命令的结果复制给变量
看完下面的,请再看5楼
以前返回命令的结果,赋值给另外一个变量时,比较常用的方法是dir /b,比如:
当你想返回 dir /b 的结果,你可以这样
  1. for /f "delims=" %%i in ('dir /b') do set str=%%i
复制代码
但是最近想到一个新方法(不知道有没有人用过),比如你同样返回 for /f
  1. @echo off
  2. set str=str
  3. set "str=%str:str=>nul & dir/b%"
  4. echo %str%
  5. pause>nul
复制代码
大家可以试试效果。
返回的 %str% 是你在CMD下用 dir /b 的显示的结果。
这种方法的优点有:
  一、代码比较简单。
  二、可以多行赋值给一个变量(即包含了换行回车符)。

注意:第三行的
  1. set "str=%str:str=>nul & dir/b%"
复制代码
这里的双引号很关键,缺少的话是赋值不成功的

[ 本帖最后由 broly 于 2011-1-3 08:22 编辑 ]
1

评分人数

---学无止境---

回复 2楼 的帖子

本论坛net版主也经常使用这种方式定义变量函数?
这个就不太清楚了。
没有绝对要这样用法的,只是方法的一种。具体还是要按实际情况来选择最好的方法
---学无止境---

TOP

原帖由 defanive 于 2011-1-3 01:40 发表
其实还可以更简单一点@echo off
set "a=>nul&dir /b"
echo %a%
pause实际上,并没有把值赋给了变量a
变量a实际的值是>nul&dir /b
打开变量延迟或者使用set a就可以看到@echo off
set a=%a:^>nul^&dir /b%
ech ...

听了此楼的解释,了解到情况了,的确是这样。看来这次失误了。
呵呵,自以为找到一种新的方法,想不到不过如此,真可笑…
此贴有误,望看到此贴的人引以为戒!
o(︶︿︶)o

[ 本帖最后由 broly 于 2011-1-3 08:47 编辑 ]

TOP

返回列表