Board logo

标题: [技术讨论] VBS脚本exec的stdout怎么移动光标? [打印本页]

作者: jyswjjgdwtdtj    时间: 2023-8-11 17:16     标题: 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:00

当程序把输出输入到管道里 就不会再管什么退格键了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
复制代码


得到的输出是
**********************************************************************=----------------------------------------------------------------------
作者: czjt1234    时间: 2023-8-12 09:03

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

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

FileSystemObject.GetStandardStream()
标准输出句柄的对象(只写)
作者: jyswjjgdwtdtj    时间: 2023-8-12 09:22

控制台程序的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
复制代码

作者: jyswjjgdwtdtj    时间: 2023-8-12 09:27

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

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2