私は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その部分については言及したようです。