[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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一个自己移动光标的控制台程序呢?



做一些无意义的思考

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

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

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

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

QQ 20147578

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

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

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

TOP

返回列表