2012-06-06 1 views
3

Donc - J'utilise un outil de capture d'image (snagit). Par défaut, l'image elle-même est enregistrée dans le presse-papiers (après une capture). Je préférerais que le chemin de l'image soit stocké dans le presse-papiers.echo "exemple" | clip, ajoute un saut de ligne non désiré

L'application me permet de (à la place) enregistrer le fichier et passer l'image en tant qu'argument à une application externe. Je passe au fichier .vbs suivant:

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 

Cela fait 99% de ce que je veux, sauf que je trouve que « ECHO ... | CLIP 'a tendance à ajouter des caractères de retour formfeed/carriage à ma chaîne.

Y a-t-il une meilleure commande que je peux utiliser (dans cmd/vbs)?

Merci d'avance.

Répondre

2

Je doute sérieusement que votre code produit <formfeed><carriage return> dans le presse-papiers. Il devrait produire <carriage return><line feed> à la fin. Ce sont les caractères de fin de ligne standard sous Windows. Ils sont automatiquement ajoutés par la commande ECHO.

Vous pouvez écrire à stdout sans la nouvelle ligne à l'aide <NUL SET /P "=message"

Je ne comprends pas pourquoi vous utilisez VBS quand il ne peut pas accéder directement au presse-papiers. Il est plus logique pour moi d'utiliser un fichier batch.

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

ou un fichier de commandes d'une ligne:

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

Si vous voulez vraiment utiliser VBS, puis ici il est

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 
Questions connexes