path - 回声 "example"|剪辑,添加不需要的换行符

标签 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

这完成了我想要的 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

或作为单行批处理文件:

@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

关于path - 回声 "example"|剪辑,添加不需要的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907188/

相关文章:

active-directory - 如何在 CMD 中查找没有用户名的用户全名?

java - 如何使用 Maven/testng 将参数发送到方法?

linux - 根据终端背景颜色更改 echo 命令中的字体颜色

JAVA_HOME 在 ubuntu 中不工作

r - fs::dir_ls() 为内部包含中文字符的文件路径返回不可读的输出

c# - 获取文本文件并随应用程序一起提供

android - Android 上的回声消除器

node.js - path.join 不起作用?

batch-file - 批处理 - 评估名称中带有参数的动态变量

shell - 变量的变量