忍者ブログ

◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例

   

【PowerShell】WinMarge

■■■■■■■■■■■■■■■
■『WinMerge_Excel.bat』で以下を保存する
■■■■■■■■■■■■■■■
@echo off
REM **************************
REM # conhost切替
REM **************************
if not "%1"=="am_admin" (
    start conhost "%~f0" am_admin & exit /b
)
 
REM **************************
REM # 画面サイズ設定
REM # カラー設定
REM # 文字コード設定
REM **************************
mode con: cols=120 lines=16
color 0a
chcp 932
 
timeout 1
echo "====== START ======"
 
REM **************************
REM # PowerShell実行
REM **************************
powershell -ExecutionPolicy RemoteSigned -File "%USERPROFILE%\Desktop\PowerShell_WinMerge\WinMerge_Excel.ps1"
 
color 17
 
echo "====== E N D ======"
 
timeout 5
■■■■■■■■■■■■■■■
■『WinMerge_Excel.ps1』で以下を保存する
■■■■■■■■■■■■■■■
Write-Host " "
Write-Host " ※※※ 【 PowerShellで、WinMergeの比較を実行 】 ※※※ "
Write-Host " ※※※ 【 比較結果をExcelファイルに保存する  】 ※※※ "
Write-Host " "
Start-Sleep 2
 
#******************************
# ■ .NET クラス読込
#-----------------------------
Add-Type -AssemblyName System.Windows.Forms
 
#******************************
# ■ 定数設定
#-----------------------------
#【ダイアログ】
$fileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Title = "【★★★★★ 対象ファイルを選択してください ★★★★★】"
 
#-----------------------------
#【メッセージボックス】
$msgbox = new-object -comobject wscript.shell
 
#-----------------------------
#【年月日-時分秒】
$DayTime = Get-Date -Format "yyyyMMdd-HHmmss"
 
#-----------------------------
#【WinMerge格納パス】
$winMerge = "C:\Program Files\WinMerge\WinMergeU.exe"
 
#******************************
# ■ 比較元(左側)を選択
#-----------------------------
$msgbox.popup("★★★★★ 【WinMerge】比較元(左側)ファイルを選択 ★★★★★")
#-----------------------------
#【左側(比較元)パス取得】
#-----------------------------
if ($fileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
  $selectedFile = $fileDialog.FileName
  Write-Host "【WinMerge】比較元(左側): $selectedFile"
} else {
  Write-Host "選択無し(キャンセル)"
}
 
#-----------------------------
#【左側(比較元)を変数に格納】
$PATH_L = "$selectedFile"
#-----------------------------
 
#******************************
# ■ 比較先(右側)を選択
#******************************
$msgbox.popup("★★★★★ 【WinMerge】比較先(右側)ファイルを選択 ★★★★★")
#-----------------------------
#【右側(比較先)パス取得】
#-----------------------------
if ($fileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
  $selectedFile = $fileDialog.FileName
  Write-Host "【WinMerge】比較先(右側): $selectedFile"
} else {
  Write-Host "選択無し(キャンセル)"
}
 
#-----------------------------
#【右側(比較先)を変数に格納】
$PATH_R = "$selectedFile"
#-----------------------------
 
#******************************
# ■ 確認メッセージ表示
#-----------------------------
Write-Host " "
Write-Host " ※※※ 比較元と比較先のファイルを確認ください ※※※ "
Write-Host " "
pause
 
#******************************
# ■ 出力先パス設定
#-----------------------------
# ## $OUTPUT_Path = [Environment]::GetFolderPath("Desktop")
# ## $OUTPUT_Path = (Get-Location).Path
$OUTPUT_Path = $PSScriptRoot
#-----------------------------
$msgbox.popup("★★★★★ 【WinMerge】出力先を確認ください ★★★★★")
Write-Host "**************************************"
Write-Host "【WinMerge】出力先パス  : $OUTPUT_Path"
 
#******************************
# ■ HTMLパス取得(生成)
#-----------------------------
$HTML_File = "$OUTPUT_Path\File_HTML_$DayTime.html"
Get-ChildItem | Select-Object Name, Length | ConvertTo-Html > $HTML_File
#-----------------------------
Write-Host "【WinMerge】出力HTML名  : $HTML_File"
 
#******************************
# ■ WinMerge 比較実行
#-----------------------------
& $winMerge /r /noninteractive /or $HTML_File $PATH_L $PATH_R
 
  #******************************
  # ■ エクセル表示
  #-----------------------------
  # ## Start-Process "excel.exe" $HTML_File
 
#******************************
# ■ WinMerge比較結果を保存する
#-----------------------------
#【EXCELファイル名の設定】
$EXCEL_File = "$OUTPUT_Path\File_Excel_$DayTime.xlsx"
Write-Host "【WinMerge】出力EXCEL名 : $EXCEL_File"
Write-Host "**************************************"
Write-Host " "
pause
 
#-----------------------------
#【EXCEL オブジェクト生成】
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
 
#-----------------------------
#【EXCEL ファイル保存処理】
try {
  $workbook = $excel.Workbooks.Open($HTML_File)
  $fileFormat = 51
  $workbook.SaveAs($EXCEL_File,$fileFormat)
  Write-Host " "
  Write-Host "【*** Excelファイル保存完了 ***】 $EXCEL_File" -ForegroundColor Green
  Write-Host " "
}
catch {
  Write-Host " "
  Write-Error "【*** ERROR ***】 : $_" -ForegroundColor Red
  Write-Host " "
}
 
#-----------------------------
#【EXCEL オブジェクト解放】
finally {
  if ($workbook) { $workbook.Close($false) }
  $excel.Quit()
  [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  Remove-Variable excel
}
PR

更新日付

04 2026/05 06
S M T W T F S
1 2
3 4 5 7 8
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

RECOMMEND

プロフィール

HN:
Account
HP:
性別:
非公開
職業:
--- NODATA ---
趣味:
--- NODATA ---
自己紹介:
◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

リンク

<<【PowerShell】関数オブジェクト  | HOME |  【LinuC-3 304試験 バージョン2.0 合格】>>
Copyright ©  -- LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例 --  All Rights Reserved
Design by CriCri / Photo by Melonenmann / powered by NINJA TOOLS / 忍者ブログ / [PR]