2013-06-19 16 views
9

コマンドラインからファイルをWindowsのクリップボードにコピー(または切り取り)する方法はありますか?コマンドラインでWindowsのクリップボードにファイル(コンテンツではない)をコピー/カットする方法はありますか?

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

+0

こちらをご覧くださいhttp://serverfault.com/questions/162273/how-to-send-a-file-into-clipboard-from-command-line-cli – cb0

+1

@ cb0 [コメント] (http://serverfault.com/a/162275)をリンクしたスレッドに追加します。 – Endoro

+0

の可能な複製[プログラムでは、エクスプローラ経由でファイルをカット/コピー/ペーストするWindows APIはありますか?](http://stackoverflow.com/questions/9845056/is-there-a-windows-api-to-programmatically-cut) -copy-paste-files-via-explorer) – Synetech

答えて

2

あなたはSwiss File Knife(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キーを使用して1行目をマークします。
  2. 押しCtrlキー + CまたははCtrl + 挿入、Windowsのコマンドラインでクリップボード
  3. にそれをコピーするには、(例えば、バッチファイルから)次のコマンドを実行します。

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

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

2

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

+1

いいえ、これはファイルのコピーではありません(コピー、xcopy、移動などはかなり基本的です)。問題は、ファイルをシステムクリップボードに配置する方法です。 – rostok

+0

私たちがファイルの種類を理解していて、それがどのように使用されているのか誰かが助けてくれると思うでしょう。 – foxidrive

4

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

type \path\to\file|clip 

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

9

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 repoです。

あなたはコマンドラインは、ここで利用可能コピーと貼り付けユーティリティをファイルを使用することができます
+1

ありがとう、これは素晴らしいです、私はこのようなものを探していました。ところで、私は2日かけてvbでこれを行うことができるかどうかを調べる前に、 'c:\ Windows \ Microsoft.NET'の下の' C# 'コンパイラが既に存在していることに気が付いた。 –

+1

あなたの質問に答えてもらえない場合は、この答えは、それがあなたのものであっても、私たちの他の人が答えをより簡単に見つけることができるようにします。 – Museful

+0

良い解決策。私の使い方では、このユーティリティを 'fileclip.exe'としてシステムパスに追加しました。パスからそれを使用して、相対パスが動作するように、 'System.IO.Path.GetDirectoryName(Environment.GetCommandLineArgs()[0])'を 'System.IO.Directory.GetCurrentDirectory()'に変更しなければなりませんでした。 –

1

を私は永遠にこれはEmacsで使用していたので、この質問、答えhere、およびNIHの立派な額に触発されました症候群は、私が

https://github.com/roryyorke/picellif

picellifで利用可能なCのバージョンを書いても、ワイルドカードを扱う(rostokのC#バージョンがないかどうかは私にははっきりしていません)。

+0

私はEmacsと他のコマンドラインでも使いたいです:)私は上記のrostokの答えからC#コードを使用していますが、Windowsのバイナリがあれば、Emacsを使って書いたからです。 –

+0

@MiserableVariable githubにWindowsバイナリがあります(リリースタブの下に表示されます)。私はバグに気づかずに過去3週間0.2.0を使ってきました。 –

+0

私はそれを逃した方法を知らない。あなたはもう1人のユーザを持っています:) –