4

つまり、画像キャプチャツール(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のいずれかで)使用できるより良いコマンドはありますか?

前もって感謝します。

4

1 に答える 1

4

<formfeed><carriage return>私はあなたのコードがクリップボードに生成されることを真剣に疑っています。<carriage return><line feed>最後に生成する必要があります。これらは、Windowsの標準の行終了文字です。これらはコマンドによって自動的に追加されECHOます。

を使用して、改行なしでstdoutに書き込むことができます。<NUL SET /P "=message"

クリップボードに直接アクセスできないのに、なぜVBSを使用しているのかわかりません。バッチファイルを使用する方が理にかなっています。

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

または1行のバッチファイルとして:

@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
于 2012-06-06T13:10:53.343 に答える