LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1629|回复: 11

请教:两个linux shell非常简单的功能,如何对应在windows bat文件中实现

[复制链接]
发表于 2009-3-5 21:03:09 | 显示全部楼层 |阅读模式
这两个问题是关于windows bat的,也不知道在这里问合适不合适,我觉得与shell总有相似之处,既然这里shell的高手这么多,也许我能找到答案也说不定。
第一个,在linux的shell中,我想要将一个命令的输出赋值给一个环境变量很简单:
AAA=`echo BBBvalue | sed 's/BBB/AAA/g'或者AAA=$(echo BBBvalue | sed 's/BBB/AAA/g)
这样AAA这个环境变量的值就成了AAAvalue,如果用命令echo $AAA的话,显示为AAAvalue
在bat文件中,我怎么能实现同样的功能?就是把输出赋值给一个环境变量,换句话说,就是echo AAAvalue如何能赋值给AAA

第二个问题,linux的shell中可以用echo -n "xxx" > filename && echo "yyy" >> filename,使得 filename这个文件中的内容为xxxyyy
好像windows的bat中的echo没有-n这个参数,在bat文件中,如果echo "xxx" > filename && echo "yyy" >> filename,那么filename这个文件的内容是:
xxx
yyy
有没有什么办法可以实现同样的功能呢?让filename的内容是xxxyyy呢?
发表于 2009-3-5 22:03:26 | 显示全部楼层
你这个问题。。。与Linux/Windows无关。你针对的只是 bash 和 cmd。仿拂再说:怎么样让 cmd 跟 bash 具有相同的功能?

但是不论你怎么做,不同的就是不同的,他们不可能具有完全相同的功能。

所以——如果你真要相同的功能,直接用windows版本的bash就可以了。。。

就算用windows版本的perl也好过直接用cmd编程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-5 23:25:47 | 显示全部楼层
呵呵,谢谢楼上的回复。但终归cmd与bash分属于windows和linux,不是吗?
而我恰恰又是个比较爱钻牛角尖的人,呵呵,可以实现的方案当然很多种,只是我真的很想知道上面的问题的答案。
谢谢了。
回复 支持 反对

使用道具 举报

发表于 2009-3-5 23:29:35 | 显示全部楼层
Windows下现在请跟上时代脚步:PowerShell。
上面的问题也许没答案。cmd这种残障shell用了干嘛都...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-5 23:35:32 | 显示全部楼层
呵呵,谢谢Jockey。一定程度上我同意你的说法,cmd确实很不爽。
但是问题在于我目前所做的无法脱离这个所谓的“残障”,实属无奈。
所以我才十分想知道是否真的没有答案。如果真的是这样,那么也可以是给我的一个很好的答案了。但也许不成,呵呵,我在等等看。
回复 支持 反对

使用道具 举报

发表于 2009-3-6 18:16:14 | 显示全部楼层
试试set命令
回复 支持 反对

使用道具 举报

发表于 2009-3-6 22:19:12 | 显示全部楼层
@skycleaner
您的回复非常有修养,我觉得如果论坛里的人都像你这样的话,论坛的气氛将会非常好!
回复 支持 反对

使用道具 举报

发表于 2009-3-7 13:00:43 | 显示全部楼层
To skycleaner:
回复 支持 反对

使用道具 举报

发表于 2009-3-7 21:15:10 | 显示全部楼层
windows下建议使用VBscript来解决一切, 毕竟cmd太肉脚,而VB脚本是windows唯一自带的脚本程序,功能也是十分强大
回复 支持 反对

使用道具 举报

发表于 2009-3-26 12:17:24 | 显示全部楼层
问题一:使用这个
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
问题二:没想到什么好办法,合成字符串吧
set a=xxx
set a=%a%yyy
echo a >> output.txt
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表