中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 13:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 代码(1)和代码(2)中a的用法,我看不太明白! 查看 1,630 回复 15
楼 主 代码(1)和代码(2)中a的用法,我看不太明白! 发表于 2008-05-07 19:28 ·  中国 江苏 苏州 电信
初级用户
积分 47
发帖 46
注册 2008-01-17 19:01
UID 108862
性别 男
状态 离线
代码一:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------

:::::::::::::::::::
@echo off
set /p a=<%0
echo %a%&pause>nul
代码二:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------

::::::&color 02
@echo off
set /p a=<%0
echo %a%&pause>nul
代码(1)和代码(2)中a的用法,我看不太明白,谁能帮我解释一下呢!
2 发表于 2008-05-07 19:54 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
从批处理自身中取值,第一段代码会输出:::::::::::::::::::
第二段会输出::::::
a只是一个变量。。。可以换成其他字符,但最后的echo %a% 也要改变。。- -|||
不知这样说能明白否~?
3 发表于 2008-05-07 19:56 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
我杂看2个一样~~好晕~
4 发表于 2008-05-07 20:01 ·  中国 江苏 苏州 电信
初级用户
积分 47
发帖 46
注册 2008-01-17 19:01
UID 108862
性别 男
状态 离线
set /p a=<%0什么意思,不懂!
5 发表于 2008-05-07 20:10 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
Originally posted by wujingyi at 2008-5-7 08:01 PM:
set /p a=<%0什么意思,不懂!

定义一个变量a a的值是从批处理自身中取得的第一行。。。 %0 代表批处理自身。。/p 参数是用户输入的内容。。。有了这个"<" 就不必用户输入,自动从自身中取值了~ "<" 是定向输入。。。
set/? 可以查看set的用法
另外请教一下高手,代码二中的color 02 是不是执行了两次~?
6 发表于 2008-05-07 20:15 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
UID 102852
性别 男
状态 离线
< 的意思是把 后面的值赋予前面 %0是自身的意思,
<%0 的意思就是把批处理自身赋予变量a
7 发表于 2008-05-07 20:15 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
你运行了还不知道?

::::::=。=我是第一行~~
@echo off
set /p a=<%0
echo %a%&pause>nul
8 发表于 2008-05-07 20:16 ·  中国 江苏 苏州 电信
初级用户
积分 47
发帖 46
注册 2008-01-17 19:01
UID 108862
性别 男
状态 离线

定义一个变量a a的值是从批处理自身中取得的第一行。。。


定义一个变量a a的值是从批处理自身中取得的第一行。。。
如果我要取得批处理自身的第二行,该怎么写呢?
9 发表于 2008-05-07 20:20 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
那个要FOR吧?
10 发表于 2008-05-07 20:23 ·  中国 江苏 苏州 电信
初级用户
积分 47
发帖 46
注册 2008-01-17 19:01
UID 108862
性别 男
状态 离线
代码是怎样的,谁能贴出来呀!
11 发表于 2008-05-07 20:30 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
@echo off
for /f "skip=1 delims=" %%i in (%~s0) do (
Set a=%%i
GoTo :ExitFor
)
:ExitFor
echo %a%
pause>nul
12 发表于 2008-05-07 20:34 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
果真代码二中的color 02执行了2次。。。
13 发表于 2008-05-07 20:44 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
把@echo off去掉就知道了……
14 发表于 2008-05-08 16:17 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
两个代码有什么区别吗?

set /p a=< %0

set /p a=应该知道是什么意思吧,就是提示用户输入,并将输入内容放到a这个环境变量中。
后面的<,这是一个转向符,表示将标准输入转向后面的%0,而%0则代表批处理本身,这样,批处理本身的第一行就变成了a的内容。

后面的echo %a% & pause >nul就是显示a这个环境变量的内容(也就是批处理的第一行)然后暂停。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
15 发表于 2008-05-08 21:17 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
都是变量,没看见有啥区别……
论坛跳转: