16

コマンド ラインから Windows クリップボードにファイルをコピー (またはカット) する方法はありますか?

特にバッチスクリプトの場合。内容をクリップボード ( ) にコピーする方法は知っていますtype file | clipが、そうではありません。Windows エクスプローラーでCtrl+を押すように、ファイル全体が必要です。C

4

7 に答える 7

15

OK、最も簡単な方法は、引数を受け取ってクリップボードに保存する小さな C# ツールを作成することだったようです。

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Collections.Specialized;

namespace File2Clip
{
    public class App
    {
        [STAThread]
        static void Main(string[] args)
        {
            List<string> list = new List<string>();

            string line;
            while(!string.IsNullOrEmpty(line = Console.ReadLine())) list.Add(line);
            foreach (string s in args) list.Add(s);

            StringCollection paths = new StringCollection();
            foreach (string s in list) {
            Console.Write(s);
                paths.Add( 
                    System.IO.Path.IsPathRooted(s) ? 
                      s : 
                      System.IO.Directory.GetCurrentDirectory() + 
                        @"\" + s);
            }
            Clipboard.SetFileDropList(paths);
        }
    }
}

2017 年編集:ソースとバイナリの両方を含むgithub リポジトリを次に示します。

于 2013-06-27T22:44:49.387 に答える
7

これにより、ファイルの内容がクリップボードに配置されます (clip.exe によって実行されます)。

type \path\to\file|clip

実際のファイルを取得するには、おそらく VBScript や PowerShell などの他のプログラミング言語を使用して Windows API にアクセスする必要があります。ファイルをCTRL + Cしたときにエクスプローラーがクリップボードに何を入れるかは完全にはわかりません。通知システムを使用して、ファイルへのパスをそこに置くよりも賢いことをしているのではないかと思います。CTRL+V のコンテキストに応じて、何かが得られる (Explorer、Word) または何も得られない (メモ帳)。

于 2013-06-22T06:49:12.593 に答える
3

私はずっとこれを Emacs で使用したいと思っていたので、この質問、ここでの回答、および大量の NIH 症候群に触発されて、次の場所で入手できる C バージョンを作成しました。

https://github.com/roryyorke/picellif

picellif はワイルドカードも処理します (rostok の C# バージョンが処理するかどうかは私にはわかりません)。

于 2015-04-30T08:55:38.707 に答える
2

スイス ファイル ナイフ(SFK)を試すことができます 。


sfk toclip
 Copy stdin to clipboard as plain text.

    type test.txt | sfk toclip
       Copies the content of ASCII file test.txt into the clipboard.

    sfk list | sfk toclip
       Copies a file listing of the current dir into the clipboard.

sfk fromclip [-wait] [-clear]

 Dump plain text content from the clipboard to the terminal.

   -wait : block until plain text is available.
   -clear: empty the clipboard after reading it.

例: バックスラッシュをスラッシュに変えます。Notepad内で次のテキストを開いているとします。

foo/bar/systems/alpha1.cpp
foo/bar/systems/alpha2.cpp
foo/bar/systems/beta1.cpp

そして、何らかの理由で、次のような形式の最初の行が必要です。

foo\bar\systems\alpha1.cpp

次に、次のようにします。

  1. SHIFT + CURSOR キーを使用して最初の行をマークします。
  2. Ctrl+CまたはCtrl+を押しInsertてクリップボードにコピーします
  3. Windows コマンド ラインで、次のコマンドを実行します (たとえば、バッチ ファイルから)。

    sfk fromclip +filter -rep x/x\x +toclip
    
  4. エディターに戻り、Ctrl+VまたはShift+ Insert を押して、クリップボードから結果を貼り付けます。

ご覧のとおり、行は「foo\bar\systems\alpha1.cpp」に変更されました。

于 2013-06-19T11:20:27.940 に答える
2

copyおよびmove(一部) は、それぞれファイルをコピー/貼り付けおよびカット/貼り付けするバッチ コマンドです。ファイルを扱うときに貼り付けや切り取りという用語は使用しませんが、ファイルを別の場所にコピーしたり、ファイルを別の場所に移動したりする必要があることを理解しています。

于 2013-06-19T13:14:02.443 に答える