ファイルの詳細情報を(クリップボードに)コピーするにはどうすればいいですか?

ファイルの詳細情報を(クリップボードに)コピーするにはどうすればいいですか?

私はWindows-10を使っています。

コンパイルされたファイルの詳細から ShortSha 情報を取得するために、かなりの作業を行いました。次に、その情報をクリップボードにコピーしたいのですが、このスクリーンショットからわかるように、うまくいかないようです。

ここに画像の説明を入力してください

ご覧のとおり、情報を選択することはできますが、クリップボードにコピーすることはできません。その情報を Git-Extensions バージョン管理システムで見つけられるように、ShortSha をコピーしたいと思います。

私の Windows バージョンに関する限り、winverコマンドの結果は次のとおりです。

ここに画像の説明を入力してください

ご参考までに:私はWindows版でその情報をコピーすることができたので(それはWindows サーバーバージョン)。

編集:
別の Windows 環境でこれを実行したことがあるはずなので、その機能の正確な名前と、そのような Windows 環境の例を知りたいです。そうすることで、パッチの検索を開始するかもしれません。

編集2: PowerShellについてのコメント
Powershell では、非常に期待できる次のコマンドを実行しました。

Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion

この解決策を進める場合、次の点を知る必要があります。

  • その結果を入力として使用してクリップボードにコピーする方法(Set-Clipboard -Value Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion動作しません)
  • これを Windows のコンテキスト メニューに統合する方法 (右クリックしてそのファイルに対してコマンドを起動する)

編集3: Windows Serverについてのコメント
この機能を使用して Windows Server で作業していたことがわかりました。この機能が Windows 10 バージョンで動作しない可能性はありますか? そうでない場合、これを動作させるためのパッチはありますか?

答え1

PowerShell はほぼ正確ですが、括弧が 1 つ欠けています。

Set-Clipboard -Value (Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion

コンテキスト メニューで使用するには、.ps1次の内容のスクリプト ファイルを作成します。私のファイルは に保存されていますC:\Temp\test.ps1

$param1=$args[0]
Set-Clipboard -Value (Get-Item "$param1").VersionInfo.ProductVersion

次に、次のテキストを.regファイルにコピーし、ダブルクリックしてレジストリにインポートします。これにより、「Get DLL version」というコンテキスト メニュー アクションが作成され、上記のスクリプトが使用されます (ファイル名内に二重のバックスラッシュを使用して、以下のテキストでスクリプトへの正しいパスを設定してください)。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile]

[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell\DLLVersion]
@="Get DLL version"

[HKEY_CURRENT_USER\SOFTWARE\Classes\dllfile\shell\DLLVersion\command]
@="powershell.exe -ExecutionPolicy Bypass -File \"C:\\Temp\\test.ps1\" \"%1\""

新しいコンテキスト メニュー エントリはすぐに使用できます。

答え2

コマンドはほぼ正しく、左括弧が 1 つだけ欠けているだけなので、あまり情報を提供できませんが、バッチ処理の方法をお教えすることはできます。

(Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion

上記は必要な情報を取得し、Set-Clipboardパイプライン引数を受け入れるので、出力をコマンドレットにパイプラインできます。

(Get-Item "C:\Directory\Application.dll").VersionInfo.ProductVersion | Set-Clipboard

エイリアスを使用してコマンドを短くすることもできます。

(gi "Path\to\file.dll").VersionInfo.ProductVersion | Set-Clipboard

giは の別名ですGet-Item

デフォルトでは、Set-Clipboard現在のクリップボードをクリアします。現在のクリップボードを保持する場合は、-Appendスイッチを使用します。

複数の dll のバージョンを取得したい場合は、Get-ChildItemディレクトリ内のすべての dll を一覧表示するために使用できます。

Get-ChildItem -Path "path\to\folder" -File -Force -Recurse -Filter *.dll

別名:

gci "path\to\folder" -file -fo -r -filt *.dll

各 dll のバージョンを取得するには:

Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {$_.VersionInfo.ProductVersion}

エイリアスはForEach-Object% 文字列で名前とバージョンを取得します。

Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}

上記は次のような文字列の配列を作成します。

Path: C:\Windows\System32\vcruntime140.dll, Version: 14.28.29304.1

この配列を改行で区切られた巨大な文字列に結合するには、次のようにします。

(Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n"

最後に、この全体をクリップボードに貼り付けます。

((Get-ChildItem "path\to\folder" -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n") | Set-Clipboard

これらすべてを関数にラップします。

Function Clip-DLLVersion {
    param(
    [string]$path,
    [bool]$append = $false
    )
    $data = (Get-ChildItem $path -file -force -recurse -filter *.dll | ForEach-Object {"Path: $($_.FullName), Version: $($_.VersionInfo.ProductVersion)"}) -Join "`r`n"
    Switch ($append)
    {
        $true {Set-Clipboard -Value $data -Append}
        $false {Set-Clipboard -Value $data}
    } 
}

使用例:

Clip-DLLVersion -path "$Env:WINDIR\System32"

編集

コメントごとに更新されました。clipは のエイリアスではないSet-Clipboardため、エイリアスされたコマンドを修正して、一般に適用できるようにしました。


編集1

コード内のいくつかのタイプミスを修正しました。すべて電話で書いたため、実行する機会がありませんでした。名前を取得する最初のコマンドにタイプミスがあり、そのコマンドを後続のコマンドにコピーして貼り付けたため、今まで気づきませんでした。

答え3

キーボードの Print Screen ボタンを使用してスクリーン ショットを撮ってみることもできます。または、Share X などのサードパーティ ソフトウェアを使用することもできます。その後、OCR を使用してテキストに変換します。

答え4

PowerShell を使用してファイルの詳細を取得できます。これは Windows 10 でも機能します。

たとえば、 のファイル情報を取得するにはAutoruns64.exe、次のコマンドを実行します。

(Get-Item "D:\tools\Autoruns64.exe").VersionInfo | format-list * | Clip

コンテキストメニューの追加に関しては、ユーザーサイモンSその部分については言及したようです。

関連情報