Jac*_*ker 5 clipboard cmd image-capture path echo
所以 - 我正在使用图像捕获工具(snagit)。默认情况下,图像本身会保存到剪贴板(捕获后)。我希望将图像的路径存储在剪贴板中。
该应用程序允许我(相反)保存文件,并将图像作为参数传递给外部应用程序。我将其传递给以下 .vbs 文件:
Dim Clipboard
Set args = WScript.Arguments
if args.length > 0 then
arg1 = trim(args.Item(0))
else
arg1 = "(No Data)"
end if
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /C echo "&arg1&" | CLIP", 2
Run Code Online (Sandbox Code Playgroud)
这完成了我想要的 99% 的事情,除了我发现 'ECHO ... | CLIP' 倾向于将换页/回车符附加到我的字符串中。
我可以使用更好的命令(在 cmd/vbs 中)吗?
提前致谢。
我严重怀疑你的代码会<formfeed><carriage return>
在剪贴板上生成。它应该<carriage return><line feed>
在最后产生。这些是 Windows 上的标准行终止字符。它们是由ECHO
命令自动添加的。
您可以使用以下命令写入标准输出而无需换行<NUL SET /P "=message"
我不明白你为什么要使用 VBS,因为它无法直接访问剪贴板。对我来说使用批处理文件更有意义。
@echo off
setlocal
set "arg1=%~1"
if not defined arg1 set "arg1=(No Data)"
<nul set /p "=%arg1%"|clip
Run Code Online (Sandbox Code Playgroud)
或作为一行批处理文件:
@if "%~1"=="" (<nul set/p"=(No Data)"|clip) else <nul set/p"=%~1"|clip
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用VBS,那么这里是
Dim args, arg1, objShell
Set args = WScript.Arguments
if args.length > 0 then
arg1 = trim(args.Item(0))
else
arg1 = "(No Data)"
end if
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /C <nul set /p ""="&arg1&""" | CLIP", 2
Run Code Online (Sandbox Code Playgroud)