echo“example”|剪辑,添加不需要的换行符

时间:2012-06-06 01:39:33

标签: path cmd echo clipboard image-capture

所以 - 我正在使用图像捕捉工具(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

除了我发现'ECHO ... |之外,这是我想要的99% CLIP'倾向于将换页/回车字符添加到我的字符串中。

我可以使用更好的命令(在cmd / vbs中)吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我严重怀疑您的代码会在剪贴板上生成<formfeed><carriage return>。它应该在最后生成<carriage return><line feed>。这些是Windows上的标准行终止字符。它们由ECHO命令自动添加。

您可以使用<NUL SET /P "=message"

在没有新行的情况下写入stdout

我无法理解为什么在无法直接访问剪贴板时使用VBS。使用批处理文件对我来说更有意义。

@echo off
setlocal
set "arg1=%~1"
if not defined arg1 set "arg1=(No Data)"
<nul set /p "=%arg1%"|clip

或作为一行批处理文件:

@if "%~1"=="" (<nul set/p"=(No Data)"|clip) else <nul set/p"=%~1"|clip

如果你真的想使用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