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

[其他] 【求助】批处理中set /p不支持管道|输入内容?

“|”连接符,就是把上个命令的执行结果(标准输出)作为下个命令的操作输入(标准输入)来执行。。。



例子很多啦:

echo y|format H:

format命令格式化之前需要询问,echo y就代替了输入y

echo XXXX|findstr .

findstr可以处理标准输入



还有一个众所周知的例子:

set /p a=<a.txt

将a.txt中第一行的内容保存到a变量中

<是把句柄作为标准输入到命令中执行,所以第一行的内容就被输入了进去,换行的时候等于按了回车,就有了这个结果



好像下面这个就不太行了:

type a.txt|set /p a=

变量a没有被赋值

连最基本的

echo 123|set /p a=

都不行

我总感觉代码没错,为什么捏哦。。。

顶起,这贴都沉了不知多久了,真的没人知道么。。。

TOP

我认为set /p是不接收管道的,不但如此连直接写在后面的值都不会被赋值给变量,只会将其值显示出来,如下:
  1. @echo off
  2. set "a=123"
  3. set /p b=%a%
  4. echo %b%&pause>nul
复制代码
***共同提高***

TOP

set /p a=<a.txt
这就说明了set /p接收管道啊!

TOP

回复 4楼 的帖子

有什么证据来证明<a.txt是通过管道实现的吗?
愿闻其详。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不支持也没什么奇怪的。runas也不支持呢(也可能是不理会)
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 6楼 的帖子

用echo命令通过管道向runas命令发送密码的方法是不行的,因为runas绕过了IO控制台直接从键盘获取密码字符串,所以echo到控制台的密码被忽略,而代以空密码进行用户验证。runas的这个机制也许正是为了避免在命令行使用密码进行其他用户权限的程序调用,因为不这样做有可能为命令行实现的暴力破解程序留下可趁之机,并且避免了密码的暴露,但同时也降低了授权用户合法访问的便捷性。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

很多通过管道应答,很多命令的结果会不一样。再比如label:

C:\Documents and Settings\Administrator\桌面>label C:
驱动器 C: 中的卷是 winxp
卷序列号为 1815-C3D2
卷标(如果没有,请按 ENTER)?

是否删除当前的卷标(Y/N)?(一直回车)

是否删除当前的卷标(Y/N)?

是否删除当前的卷标(Y/N)?

是否删除当前的卷标(Y/N)? ^C
C:\Documents and Settings\Administrator\桌面>echo.|label C:
驱动器 C: 中的卷是 winxp
卷序列号为 1815-C3D2
卷标(如果没有,请按 ENTER)?
是否删除当前的卷标(Y/N)?
是否删除当前的卷标(Y/N)?
C:\Documents and Settings\Administrator\桌面>vol C:
驱动器 C 中的卷是 winxp
卷的序列号是 1815-C3D2

如果输入不符合要求,命令会一直让你输入。管道应答不正确的话,命令会自动中断。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

<是将文件内容作为输入,|是将上个命令的输出作为输入,都是通过输入的方式传递给set /p的,没理由<支持而|不支持。。。

TOP

程序员写了那个功能模块就是支持,没写就是不支持。不需要理由吧?
同样的命令在XP上正常,在2k上就出错,我们不能说它没有理由的啊。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表