コマンドラインからファイルをWindowsのクリップボードにコピー(または切り取り)する方法はありますか?コマンドラインでWindowsのクリップボードにファイル(コンテンツではない)をコピー/カットする方法はありますか?
特に、バッチスクリプトを使用します。私はクリップボード(type file | clip
)に内容をコピーする方法を知っていますが、そうではありません。 WindowsのエクスプローラでCtrl + Cを押すと、ファイル全体が表示されます。
コマンドラインからファイルをWindowsのクリップボードにコピー(または切り取り)する方法はありますか?コマンドラインでWindowsのクリップボードにファイル(コンテンツではない)をコピー/カットする方法はありますか?
特に、バッチスクリプトを使用します。私はクリップボード(type file | clip
)に内容をコピーする方法を知っていますが、そうではありません。 WindowsのエクスプローラでCtrl + Cを押すと、ファイル全体が表示されます。
あなたは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
その後、あなたはそれをこの方法で行うことができます
にそれをコピーするには、(例えば、バッチファイルから)次のコマンドを実行します。
戻るエディタでsfk fromclip +filter -rep x/x\x +toclip
、プレスはCtrl +VまたはShift +結果をクリップボードから挿入して貼り付けます。
ご覧のとおり、行は「foo \ bar \ systems \ alpha1.cpp」に変更されました。
copy
およびmove
は、ファイルのコピー/貼り付けおよび切り取り/貼り付けを行うバッチコマンド(一部)です。私たちは、ファイルを扱うときにペーストまたはカットという用語を使用しませんが、私が理解していれば、別の場所にファイルをコピーし、別の場所にファイルを移動する必要があります。
これにより、ファイルのの内容がクリップボード(clip.exeによって実行)に格納されます。
type \path\to\file|clip
実際のファイルを取得するには、あなたはおそらく、WindowsのAPIのにアクセスするためにVBScriptやPowerShellのように、いくつかの他のプログラミング言語に頼る必要があります。私は、CTRL + Cを押してファイルを開くと、エクスプローラがクリップボードに挿入する内容を完全にはわかりません。私はそれが通知システムを使用して、そこにファイルへのパスを置くよりももっと知的なことをすると思う。 CTRL + Vのコンテキストに応じて、何か(エクスプローラ、ワード)または何も(メモ帳)を取得します。
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です。
あなたはコマンドラインは、ここで利用可能コピーと貼り付けユーティリティをファイルを使用することができますありがとう、これは素晴らしいです、私はこのようなものを探していました。ところで、私は2日かけてvbでこれを行うことができるかどうかを調べる前に、 'c:\ Windows \ Microsoft.NET'の下の' C# 'コンパイラが既に存在していることに気が付いた。 –
あなたの質問に答えてもらえない場合は、この答えは、それがあなたのものであっても、私たちの他の人が答えをより簡単に見つけることができるようにします。 – Museful
良い解決策。私の使い方では、このユーティリティを 'fileclip.exe'としてシステムパスに追加しました。パスからそれを使用して、相対パスが動作するように、 'System.IO.Path.GetDirectoryName(Environment.GetCommandLineArgs()[0])'を 'System.IO.Directory.GetCurrentDirectory()'に変更しなければなりませんでした。 –
を私は永遠にこれはEmacsで使用していたので、この質問、答えhere、およびNIHの立派な額に触発されました症候群は、私が
https://github.com/roryyorke/picellif
picellifで利用可能なCのバージョンを書いても、ワイルドカードを扱う(rostokのC#バージョンがないかどうかは私にははっきりしていません)。
私はEmacsと他のコマンドラインでも使いたいです:)私は上記のrostokの答えからC#コードを使用していますが、Windowsのバイナリがあれば、Emacsを使って書いたからです。 –
@MiserableVariable githubにWindowsバイナリがあります(リリースタブの下に表示されます)。私はバグに気づかずに過去3週間0.2.0を使ってきました。 –
私はそれを逃した方法を知らない。あなたはもう1人のユーザを持っています:) –
こちらをご覧くださいhttp://serverfault.com/questions/162273/how-to-send-a-file-into-clipboard-from-command-line-cli – cb0
@ cb0 [コメント] (http://serverfault.com/a/162275)をリンクしたスレッドに追加します。 – Endoro
の可能な複製[プログラムでは、エクスプローラ経由でファイルをカット/コピー/ペーストするWindows APIはありますか?](http://stackoverflow.com/questions/9845056/is-there-a-windows-api-to-programmatically-cut) -copy-paste-files-via-explorer) – Synetech