这是一个VBScript代码示例,演示了如何捕获命令行程序发送到标准输出的任何内容.它执行命令xcopy /?并在消息框中显示输出.在出现消息框之前,您会看到控制台窗口弹出一瞬间.
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("xcopy /?")
Do
line = objExec.StdOut.ReadLine()
s = s & line & vbcrlf
Loop While Not objExec.Stdout.atEndOfStream
WScript.Echo s
Run Code Online (Sandbox Code Playgroud)
这是另一个VBScript代码示例,演示如何在不显示控制台窗口的情况下执行脚本.
objShell.Run "c:\temp\mybatch.bat C:\WINDOWS\system32\cmd.exe", 0
Run Code Online (Sandbox Code Playgroud)
要么
objShell.Run "c:\temp\myscript.vbs C:\WINDOWS\system32\cscript.exe", 0
Run Code Online (Sandbox Code Playgroud)
你可以看到它有形式<script><space><executor>.最后一个示例使用objShell.Run而不是objShell.Exec
我不知道的是如何执行命令行程序(如果需要,从批处理文件),捕获标准输出,而不显示控制台窗口.有任何想法吗?
我的实践测试书包含关于三元运算符的这个问题:
// What is the output of the following application?
public class Transportation {
public static String travel(int distance) {
return(distance < 1000 ? "train" : 10);
}
public static void main(String[] args) {
travel(500);
}
}
Run Code Online (Sandbox Code Playgroud)
它不编译.给出的解释如下:
三元操作要求右手表达式都是兼容的数据类型.在此示例中,外部三元操作的第一个右侧表达式是String类型,而第二个右侧表达式是int类型.由于这些数据类型不兼容,因此代码无法编译,而选项C是正确的答案.
这是真的吗?在我看来,这个例子没有编译,因为10不是String,而String是方法必须返回的.我问,因为
System.out.println(distance < 1000 ? "train" : 10);
编译和运行没有问题.
据我所知,FAT文件系统以2秒的粒度存储文件的时间戳(修改日期等),NTFS以100纳秒的粒度存储它们.
我正在使用带有FileSystemObject的VBScript来显示文件详细信息.函数file.DateLastModified以1秒的精度显示日期(在NTFS上).
有没有办法根据NTFS的内部存储粒度显示精度的时间戳.我想象的是像8/9/2010 14:40:30,1234567
如果没有VBScript/FileSystemObject,还有其他方法吗?
我在VBScript中做了一些性能测量.我想测量算法的执行速度
t1 = Now()
doAlotOfWork ()
t2 = Now()
MsgBox "Operation took " & DateDiff ("s", t1, t2) & " seconds."
Run Code Online (Sandbox Code Playgroud)
这给了我几秒钟的时间.如果一个算法导致1秒执行时间而另一个算法导致2秒钟,这几乎不会给我任何有用的信息.我需要将问题大小炸成一段需要一分钟才能执行的东西.
有没有人知道在VBScript中进行这些测量的方法,但随后更精细.例如,引入毫秒的东西.
我觉得WMI必须有一个解决方案.
Windows 任务管理器的进程选项卡显示了几个包含信息的列,其中之一是拥有进程的用户的用户名。
使用命令 WMIC 进程(来自管理员启动的 cmd.exe)为我提供了相同类型的信息,但我找不到用户名的任何列。如何找出哪个用户使用 WMIC 启动了该进程?
vbscript ×3
batch-file ×1
benchmarking ×1
granularity ×1
java ×1
ntfs ×1
stdout ×1
timer ×1
timestamp ×1
wmic ×1