我已经了解了如何通过向注册表添加密钥,在Windows资源管理器上向文件添加右键单击上下文菜单项.即我可以在资源管理器中右键单击文件并针对该文件运行自定义应用程序.
我想对一个文件夹做同样的事情,但还没有找到办法(尚).我看到有关创建/编写自定义上下文菜单处理程序的文章,但我宁愿不去那里.
我在这里找到了一篇关于如何将级联上下文菜单项添加到桌面和资源管理器中的"计算机"的文章,但这对任何文件夹都不起作用.
我希望能够将我的自定义应用程序添加到上下文菜单中,并使其适用于文件和文件夹.有没有办法在不编写上下文菜单处理程序的情况下执行此操作?
我将此脚本保存在"test.vbs"中:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = NothingRun Code Online (Sandbox Code Playgroud)
当我运行脚本时,我想传递"workFolder"变量的值.
我怎样才能做到这一点?我可以做吗?像"cscript test.vbs workFolder:'C:\ temp \'"之类的东西?
额外问题:是否需要使用"Set workFolder = Nothing"清理传递的变量,或者VBSCript在终止时自动执行此操作?也许"Set File = Nothing"和"Set FSO = Nothing"也是不必要的?如果您知道这两个问题的答案,请告诉我.
我希望能够通过命令行运行程序,我想用VbScript启动它.我还想获取命令行的输出并将其分配给变量,我希望所有这些都可以在没有cmd窗口弹出的情况下以静默方式完成.我分别管理了两件事但不在一起.这是我到目前为止所得到的.从cmd运行命令并获取输出:
Dim WshShell, oExec
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("C:\snmpget -c public -v 2c 10.1.1.2 .1.3.6.1.4.1.6798.3.1.1.1.5.1")
x = oExec.StdOut.ReadLine
Wscript.Echo x
Run Code Online (Sandbox Code Playgroud)
上面的脚本工作并做我想要的,除了cmd弹出一小段时间.
这是一个静默运行但不会获取输出的脚本
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("C:\snmpset -c public -v 2c -t 0 10.1.1.2 .1.3.6.1.4.1.6798.3.1.1.1.7.1 i 1", 0, true)
Run Code Online (Sandbox Code Playgroud)
有没有办法让这两个一起工作?
让我告诉你我为什么要这样做的背景.我基本上每隔5-10分钟对一个单元进行一次轮询,我会在发生某种情况时让脚本发送电子邮件或抛出一个消息框,但我不希望看到cmd行整天在我的计算机上弹出.有什么建议?谢谢
通常情况下,我在VM中运行Linux,但是,我的大多数虚拟机都在外部硬盘驱动器上,我可能会也可能没有我的.我认为Cygwin是轻量级功能的一个很好的选择,当我需要像Linux这样的东西并且我的笔记本电脑上没有VM时.但是我无法正确配置 - 我希望开发+ X11的最低限度.有没有人以这种方式使用Cygwin?如果是这样,你有什么建议?
我试图检查刺痛是否有空间.以下内容对我不起作用.
if (skpwords.contains(lcase(query)) And Mid(query, InStrRev(query, " "))) then
end if
Run Code Online (Sandbox Code Playgroud) 我正在使用 CScript 运行 VBScript 文件,我需要将命令行传递给脚本,其中参数包含空格和引号。整个命令需要作为一个参数传递给脚本。例如:
C:\> CScript myscript.vbs //Nologo "cmd.exe /c "dir && del /q *.txt""
Run Code Online (Sandbox Code Playgroud)
请注意,上面的特定命令行只是一个示例,但它确实涉及我要执行的操作(即传递涉及运行 cmd.exe 的命令行)。但是,我正在尝试解决一般情况。
问题是 CScript 似乎在试图确定引号的开始和结束位置时感到困惑。至少有时候。
以下脚本可能有助于解释。它只是输出传入的参数,因为它看到它们:
Dim count
For count = 0 To WScript.Arguments.Count-1
WScript.Echo CStr(count) & " = " & WScript.Arguments.Item(count)
Next
Run Code Online (Sandbox Code Playgroud)
很多时候,它按预期工作:
C:\> cscript myscript.vbs //Nologo "1 2 3"
0 = 1 2 3
Run Code Online (Sandbox Code Playgroud)
但是当引用参数中有引号时,情况会发生变化:
C:\> cscript myscript.vbs //Nologo "1 "2 3""
0 = 1 2
1 = 3
Run Code Online (Sandbox Code Playgroud)
我知道在上面的示例中每个引号是打开还是关闭参数存在引入歧义,因此接下来我尝试转义内部引号,以便命令处理器将它们视为文字字符串:
C:\> cscript myscript.vbs //Nologo "1 ^"2 3^""
0 = 1 ^2 …Run Code Online (Sandbox Code Playgroud) 我使用下面的脚本来调用另一个脚本.问题是我必须将我通过WScript.Arguments检索的参数传递给我正在调用的第二个脚本.有人请告诉我该怎么做.
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
Run Code Online (Sandbox Code Playgroud) 我正在使用Cygwin并希望使用 diff 参数运行它,这样我就可以在 Windows 中启动后立即更改目录。
例如
bash --login -i ; cd /
Run Code Online (Sandbox Code Playgroud)
或者
bash --login -i ; cd /tmp
Run Code Online (Sandbox Code Playgroud)
但cd不起作用,我如何将更改目录传递给
bash --login -i
Run Code Online (Sandbox Code Playgroud)
仅供参考,我无法将其放入cd.bash,它必须传入
尝试过这个但没有运气
bash --login -i -s cd /tmp;
Run Code Online (Sandbox Code Playgroud) vbscript ×5
cygwin ×2
wsh ×2
arguments ×1
bash ×1
command-line ×1
contextmenu ×1
execution ×1
explorer ×1
linux ×1
parameters ×1
silent ×1