Windows: Per Batch-Skript etwas in die Zwischenablage kopieren

Von einem Batch-Skript aus lassen sich eine oder mehrere Zeilen bzw. ganze Ausgaben in die Zwischenablage kopieren.

Die Hilfe dazu sieht so aus:

C:\Windows\system32>clip /?

CLIP

Beschreibung:
Leitet die Ausgabe von Befehlszeilenprogrammen in die
Windows-Zwischenablage um.
Diese Textausgabe kann in andere Programme eingefügt werden.

Parameterliste:
/? Zeigt diese Hilfe an.

Beispiele:
DIR | CLIP Erstellt eine Kopie des aktuellen Verzeichnis-
inhalts in der Windows-Zwischenablage.

CLIP < README.TXT Erstellt eine Textkopie von readme.txt
in der Windows-Zwischenablage.

Einfach mittels Pipe lassen sich Werte, Texte, usw. übergeben:

echo Test | clip

“Test” lässt sich dann z.B. mittels “Strg + V” in Notepad oder sonstwo einfügen.

Mehrere Zeilen können so übergeben werden:

(echo Erste Zeile
echo Zweite Zeile
)|clip

Die Zwischenablage kann man mit

echo off | clip

leeren.

Um z.B. eine Variable in die Zwischenablage zu kopieren und nach einer einer gewissen Zeit wieder zu entfernen kann man wie folgt vorgehen:

@echo off

rem Die Zwischenablage leeren

 echo off | clip

rem Die Variable in die Zwischenablage kopieren

 echo %Variable%|clip

rem Pause

 timeout /t 15

rem Die Zwischenablage leeren

 echo off | clip

Quelle:

scunster.co.uk – Send text to Windows clipboard from a batch file

7 Kommentare

  1. Tom Stein

    Warum sollte man die Zwischenablage leeren, bevor man sie mit einem Wert belegt? Viel interessanter ist. Wie bekommt man einen Text der Zwischenablage wieder in eine Batch-Datei?

  2. Andy

    Wenn vorher schon etwas in der Zwischenablage ist, macht es Sinn, diese zuerst zu leeren.
    Angenommen man hat ein Passwort so kopiert, dann ist das Leeren durchaus sinnvoll.

    Zu deiner zweiten Frage:

    powershell Get-Clipboard > test03.cmd

    oder das hier:

    https://www.c3scripts.com/tutorials/msdos/paste.html

    Beides gefunden hier: stackoverflow – How can you get the clipboard contents with a Windows command?

    Da gibt’s noch mehr, einfach mal den Thread durchlesen und ggf. testen, was für die Anforderung am besten passt.

  3. Detlef Reichow

    in der datei.txt stand:
    fútbol lámpara de techo

    eingelesen mit:
    CLIP < datei.txt

    in der Zwischenablage hatte ich dann:
    ÔÇïÔÇïf├║tbol l├ímpara de techo

    es scheint, dass nicht alle Zeichensätze unterstützt werden – oder gibt es da noch einen Trick?

  4. Andy

    Evtl. die Codepage im Skript ändern, z.B.

    chcp 1252

    Siehe https://learn.microsoft.com/de-de/windows-server/administration/windows-commands/chcp

  5. Detlef Reichow

    Danke für den Tipp,
    hat leider nicht geklappt, es gibt zwar eine Änderung aber den richtigen pc für Spanisch habe nicht gefunden, habe ein paar ausprobiert, muss dann eben mit einem Makro die .txt öffnen und herkömmlich kopieren, das geht unter Win10 in mehreren Sprachen

  6. Patty

    Hallo,
    ich habe zum Beispiel Text a der später in Zeile A eingefügt werden soll. Und zum Beispiel Text b der in Zeile B eingefügt werden soll.
    Wenn ich das ausführe:
    echo off | clip
    (
    echo a
    echo b
    )| clip

    Dann habe ich Text a und b als einen Text kopiert, aber keine Unterteilung. So dass ich die Texte den entsprechenden Zeilen einfügen kann.

    Ich hoffe das ist Verständlich

  7. Andy

    Vom Prinzip her muss zwischen den beiden Echos der Sprung eingefügt werden.
    Hier lautet die Frage wie denn in die zweite Zeile “gesprungen” werden muss?
    Tab, Enter, CR, LF, CRLF, einfach eine Zeile nach unten, usw.

    Am Beispiel von LF reicht ein simples:

    echo^

    zwischen den beiden Echos (ggf. noch ein setlocal EnableDelayedExpansion am Anfang des Skripts setzen).

    Siehe:

    https://administrator.de/tutorial/erzeugung-von-esc-cr-lf-und-del-mit-reinem-batch-156449.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑