コマンド ラインから Windows クリップボードにファイルをコピー (またはカット) する方法はありますか?
特にバッチスクリプトの場合。内容をクリップボード ( ) にコピーする方法は知っていますtype file | clip
が、そうではありません。Windows エクスプローラーでCtrl+を押すように、ファイル全体が必要です。C
コマンド ラインから Windows クリップボードにファイルをコピー (またはカット) する方法はありますか?
特にバッチスクリプトの場合。内容をクリップボード ( ) にコピーする方法は知っていますtype file | clip
が、そうではありません。Windows エクスプローラーでCtrl+を押すように、ファイル全体が必要です。C
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 リポジトリを次に示します。
これにより、ファイルの内容がクリップボードに配置されます (clip.exe によって実行されます)。
type \path\to\file|clip
実際のファイルを取得するには、おそらく VBScript や PowerShell などの他のプログラミング言語を使用して Windows API にアクセスする必要があります。ファイルをCTRL + Cしたときにエクスプローラーがクリップボードに何を入れるかは完全にはわかりません。通知システムを使用して、ファイルへのパスをそこに置くよりも賢いことをしているのではないかと思います。CTRL+V のコンテキストに応じて、何かが得られる (Explorer、Word) または何も得られない (メモ帳)。
私はずっとこれを Emacs で使用したいと思っていたので、この質問、ここでの回答、および大量の NIH 症候群に触発されて、次の場所で入手できる C バージョンを作成しました。
https://github.com/roryyorke/picellif
picellif はワイルドカードも処理します (rostok の C# バージョンが処理するかどうかは私にはわかりません)。
スイス ファイル ナイフ(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
次に、次のようにします。
Windows コマンド ラインで、次のコマンドを実行します (たとえば、バッチ ファイルから)。
sfk fromclip +filter -rep x/x\x +toclip
エディターに戻り、Ctrl+VまたはShift+ Insert を押して、クリップボードから結果を貼り付けます。
ご覧のとおり、行は「foo\bar\systems\alpha1.cpp」に変更されました。
copy
およびmove
(一部) は、それぞれファイルをコピー/貼り付けおよびカット/貼り付けするバッチ コマンドです。ファイルを扱うときに貼り付けや切り取りという用語は使用しませんが、ファイルを別の場所にコピーしたり、ファイルを別の場所に移動したりする必要があることを理解しています。