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

[技术讨论] VBS脚本exec的stdout怎么移动光标?

本帖最后由 jyswjjgdwtdtj 于 2023-8-12 08:33 编辑
  1. set w=createobject("wscript.shell")
  2. set t=w.exec("cmd")
  3. msgbox t.stdout.read(1)
  4. t.stdout.write(chr(8))
  5. msgbox t.stdout.read(1)
复制代码
会输出
M
错误的文件模式

改成stdin.write(chr(8))没效果
stdout.skip(-1)/read(-1)也报错 不接受负数

怎么做到移动光标?那如果exec一个自己移动光标的控制台程序呢?



做一些无意义的思考

本帖最后由 jyswjjgdwtdtj 于 2023-8-12 09:55 编辑

readall和atendofstream不可使用 我想是因为在控制台的流没有结尾 只有等被close了 才会有结尾 才会拦截进程还有 如果到了末尾(即读完了 但不代表之后不会有输出) 再读 也会卡死

TOP

控制台程序的stdinout的光标位置与管道的stdinout光标位置无关1.vbs:
  1. set w=createobject("wscript.shell")
  2. set t=w.exec("cscript /nologo 2.vbs")
  3. wscript.sleep 100
  4. do
  5. msgbox t.stdout.read(1)
  6. loop
复制代码


2.vbs
  1. for i=65 to 90
  2. wscript.stdout.write chr(i)
  3. next
  4. do
  5. wscript.stdout.write chr(8)
  6. wscript.sleep 1000
  7. loop
  8. wscript.stdin.readline
复制代码

TOP

WshScriptExec.StdOut
标准输出句柄的对象(只读)
4个属性6个方法
只读的

WScript.StdOut
标准输出句柄的对象(只写)

FileSystemObject.GetStandardStream()
标准输出句柄的对象(只写)

QQ 20147578

TOP

当程序把输出输入到管道里 就不会再管什么退格键了1.vbs
  1. set w=createobject("wscript.shell")
  2. set t=w.exec("cscript /nologo 2.vbs")
  3. set f=createobject("scripting.filesystemobject")
  4. set ff=f.opentextfile("1.txt",2,true)
  5. wscript.sleep 100
  6. do
  7. ff.write t.stdout.read(1)
  8. loop
复制代码


2.vbs
  1. wscript.stdout.write string(70,"*")&"="
  2. for i=0 to 69
  3. wscript.stdout.write chr(8)
  4. wscript.stdout.write chr(8)
  5. wscript.stdout.write "-"
  6. next
  7. wscript.stdin.readline
复制代码


得到的输出是
**********************************************************************=----------------------------------------------------------------------

TOP

返回列表