メニュー登録/ MsgBox/ dbg/ キー入力窓などのアプリ関数を使う:中級編
概要
ファイルの[名称を一式変更]したいとき、複数ファイルから[指定文字を検索]したいとき、また[フォルダを圧縮し送信]したいときなどに便利です。中級編ではこのアプリ内部関数や外部アプリの利用事例として次の5件を組込みます。ご利用頂くと幸いします。- 複数ファイルの名称変更
- 複数ファイルの文字検索&表示
- フォルダ/ファイルの圧縮処理(PSW付)
- メールを既読、未読に一括変更
- メール受信BOXの表示
利用方法
2.1 はじめての方...<参照>2.2 アプリ作成済みの方...<参照>
★ [wPshOutlook21.bat] Ver1.41 以上
★ [ wPshOutlook21_add.ps1 ] Ver 1.20 以上
2.3 利用の内部関数、外部アプリ一覧
(1)内部関数: ssVBKeyInp, MsgBox, MsgYesNo, ssDirCmp, MenuSet, ssDMnMSet, ssMsgBoxWnd, ssWCAct, ssMaV2Box, dbg, ssRbtMenu, ssMaSetText
(2)外部アプリ: さくらEditor、Lhaplus
起動画面/ 操作方法
3.1 複数ファイルの名称変更を確認し一括処理します。(1) 変更フォルダに移動し、[ツール2]>[ファイル名の一括変更] を押下します。
(2) 入力BOX窓に [対象文字列] ; [変更後文字列] を入力し [Enter] を押下します。注.文字列の間に[;](セミコロン)を入れてください。
(3) 変更内容の表示画面窓を確認しOKなら[MSG]確認小窓の[Y]を押下します。
(4) 次のように一括でファイル名変更処理されます。
3.2 複数ファイルから「ファイル」文字を一式検索してそのファイルにジャンプしてその行を表示します。
(1) 検索フォルダに移動し、[ツール2]>[フォルダ内の文字検索] を押下します。
(2) 入力BOX窓に「ファイル」の検索文字をキー入力し[Enter]を押下します。
(3)上記表示ファイル(.txt)について逐次、検索文字(ファイル)を検索しファイル名、行番号、該当列の一覧窓(grep検索)を表示します。
(4)一覧窓(grep検索)の中の表示したい行(例では最後の行)をダブルクリックすると次のようにメール表示窓へ表示します。
(5)[さくらEditor]で表示したい場合は [@ ] を前に付加して入力BOX窓に入力します。
注.さくらEditorの組込み、アプリ登録が必要です。(4.2項参照)
<入力例> [ @ ファイル]
3.3 フォルダの圧縮処理(PSW付)をします。
(1) 対象フォルダのあるフォルダに移動し対象フォルダをマウス指定します。
(2) [ツール2]>[Dir/File圧縮] を押下します。
(3) [PSW入力]の入力BOX窓にPSWを入力し[Enter]を押下します。初期設定は年月日です。
(4) 上記例の[!tmp]圧縮では、!tmp.zipが圧縮ファイルとして生成されます。
組込み方法
4.1 複数ファイルの名称変更(注1)(1) 起動表示窓から次の操作で[usr機能追加]を開きます。
[ツール]>[usr編集]>[PSW入力]>[0000 キー入力]>[Enter]で開く。
(2) 次のXX行をマウスでコピペして貼付けた後、表示窓の[保存]釦を押下し終了します。
(3) アプリ再起動又は [ツール]>usr[再設定] で設定します。
<補足1>( ssDMnMSet "XXXXXXX" ).add_Click({ [PSHコマンドYYYY列] }); でメニューにYYYY処理を登録します。
<補足2>[$szMaBox]起動表示窓の[ReadOnly]を指定しマウス操作を切換えます。[変更前文字]をマウスコピー取得するとき利用します。
<補足3>ファイル名の部分変更は[ssVBKeyInp関数]により[変更前文字 ; 変更後文字]を入力して処理します。
##★No5/6: ファイル名の一括変更--------------------------------------------
(MenuSet 13 ); $aa=( ssDMnMSet "----" );
( ssDMnMSet "[usr]中級編(Web)" ).add_Click({ start "https://ryupapa008.blogspot.com/2025/11/blog-post_9.html" });
( ssDMnMSet "文字選択<>行選択" ).add_Click({ $mm=$szMaBox; if($mm.ReadOnly-eq $false){$mm.ReadOnly=$true}else{$mm.ReadOnly=$false} });
( ssDMnMSet "D:ファイル名の一括変更" ).add_Click({ ssUsrAct_Rnme });
##★
function global:ssUsrAct_Rnme($zpam){ if( $szMaDirGet-eq "" ){return};
$zcc=(ssVBKeyInp "[ファイル名の一括変更]" "[入力] 対象文字列 ; 変更文字列`n`n例) abcd ; xxxx " ""); if($zcc-eq ""){return};
$zcm=$zcc.split(";"); $zcc0=$zcm[0].trim(); $zcc1=$zcm[1].trim();
$zcc =((Dir $szMaDirGet -name -filter "*$zcc0*" |%{ $_.replace($zcc0,$zcc1) } )-join "`r`n");
MsgBox $zcc "720,540" "名称一括変更" 10; if( (MsgYesNo "[MSG]" "$zcc0 -> $zcc1")-ne "Yes" ){return};
Dir $szMaDirGet -name -filter "*$zcc0*" |%{ Rename-Item "$szMaDirGet\$_" ($_.replace($zcc0,$zcc1)) };
ssDirCmp !DGet 1 $szMaDirGet ;
};
##-------------------------------------------------------------------------
注1. 初級編を組込まない場合は次のXX行を最初に張付けしてご利用ください。
##★No0: usr[再設定]の登録 ★ツール2[13]の新規登録/再設定-----------
if($szUsrSts-eq $null){ $global:szUsrSts=1; (MenuSet 12 ); (ssDMnMSet "usr[再設定]" ).add_Click({ . $flusr }); };
(MenuSet 13 "!Set::ツール2" );
##-----------------------------------------------------------------
4.2 複数ファイルの文字検索&表示
(1) 上記と同じ操作で[usr編集]を開きます。
(2) 次のXX行をコピペして【追加貼付】後、[保存]から終了します。
(3) アプリ再起動又は [ツール]>usr[再設定] で設定します。
<補足1>[さくらEditor]を利用する場合、関連サイトからダウンロードしてパソコンに組込みます。なお現在の組込みフォルダは[C:\winfree\Sakura\sakura.exe]です。必要により2行目を変更可能してご利用ください。(利用する場合先頭の [##]を削除する)
##★No7: フォルダ内ファイルで文字検索(さくらEditorも利用)--------------------
##$zcc="C:\winfree\Sakura\sakura.exe"; if(Test-Path $zcc){;}else{ $zcc="notepad.exe" }; $global:szEditor=$zcc;
(MenuSet 13 );
( ssDMnMSet "D:フォルダ内の文字検索" ).add_Click({ if( $szMaDirGet-eq "" ){return};
$zcc=(ssVBKeyInp "[フォルダ内ファイル(txt)の文字検索] [@]さくら利用" "[入力] [@] 検索文字(ABCD))" "");
if($zcc-eq ""){return}; ssUsrAct_Grep $szMaDirGet $zcc });
##★
$global:szGrepBoxPam="860,640 10 #E0FFE4";
function global:ssUsrAct_Grep($zdir,$zpam){ $zcc0="$zdir`n"; if($zpam.startsWith("@ ")){ $zpam=$zpam.substring(1).trim(); $global:szSakura=1 };
(dir -name $zdir\*.txt)|%{ $zcc=( (SLS -enc oem -patt $zpam "$zdir\$_")-join "`n" ); if( $zcc.length-gt 5 ){ $zcc0+=$zcc+"`n" }; };
$zcc=$zcc0.replace("`r","").replace("$zdir\",""); ssMsgBoxWnd 0 0 $szGrepBoxPam $zcc "【grep検索(txt)】"; $mBox.WordWrap=$false;
$mBox.Add_DoubleClick({ $zcm=( ssWCAct $this 1 ).split(":"); $zdir=$this.Lines[0]; $zfl="$zdir\"+$zcm[0];
if( $szSakura-eq 1 -and $szEditor.contains("sakura") ){ $yy=("-y="+$zcm[1]); & $szEditor $zfl $yy; return};
(ssMaV2Box 3 $zfl); ssDirCmp !MovL $zcm[1] $szBoxMm; });
};
##-------------------------------------------------------------------------
4.3 フォルダ/ファイルの圧縮処理(PSW付き)
<事前処理>圧縮ツール[Lhaplus]を関連サイトからダウンロードしてパソコンに組込みます。初期フォルダは[C:\winfree\Lhaplus\Lhaplus.exe]です。フォルダ変更のとき2行目の [$global:ssTlCmpres]の行を修正します。
(1) 上記と同じ操作で[usr編集]を開きます。
(2) 次のXX行をコピペして【追加貼付】します。
(3) 必要により圧縮ツールのフォルダ変更(2行目)した後、[保存]から終了します。
(4) アプリ再起動又は [ツール]>usr[再設定] で設定します。
##★No8: フォルダ/ファイルのPSW付圧縮(1項のみ)(ツール2[13]へ)-------------
$global:szTlCmpres ="C:\winfree\Lhaplus\Lhaplus.exe";
(MenuSet 13 );
( ssDMnMSet "D:Dir/File圧縮(1選択+psw)" ).add_Click({ ssUsrAct_DCmp });
( ssRbtMenu "D:Dir/File圧縮(1選択+psw)" ).add_Click({ ssUsrAct_DCmp });
##★
function global:ssUsrAct_DCmp($zpam){ if( $szMaDirGet-eq "" ){return}; $zcc0=(ssMaSetText 0);
if(Test-Path $szTlCmpres){}else{ dbg "Lhaplusをインストールし`r`nフォルダ名を確認くだい"; return};
$zpsw=(ssVBKeyInp "[PSW入力]" "zip圧縮PSWの入力`n`n$szMaDirGet\`n`n$zcc0" ( Get-Date -Format "yyyyMMdd") ); if($zpsw-eq ""){return};
Start -wait $szTlCmpres -Arg "/c:zip /p:`"$zpsw`" /o:$szMaDirGet `"$szMaDirGet\$zcc0`""; ssDirCmp !DGet 1 $szMaDirGet;
};
##-------------------------------------------------------------------------
4.4 メールを既読、未読に一括変更
(1) 上記と同じ操作で[usr編集]を開きます。
(2) 次のXX行をコピペして【追加貼付】後、[保存]から終了します。
(3) アプリ再起動又は [ツール]>usr[再設定] で設定します。
##★No9: mail複数行の選択処理----------------------------------------------
(MenuSet 13 ); $aa=( ssDMnMSet "----" );
( ssDMnMSet "M:未読に戻す(受信Box" ).add_Click({ ssMailAct3 !MCmp 11 });
( ssDMnMSet "M:読済み設定(受信Box" ).add_Click({ ssMailAct3 !MCmp 12 });
##★MCmp:選択行処理( 11:未読に戻す 12:読み済み
function global:ssMailAct3($zcmd,$zpam){ switch($zcmd){
!MCmp{ $zcc0=$szMaBox.SelectedText;
foreach($cc in $zcc0.split("`n") ){ $cc=$cc.trim(); if( ($cc.length-lt 12)-or($cc-eq $cc0) ){continue}; $ii=$cc.substring(0,17);
switch($zpam){ 11{$szMaItem[$ii].UnRead=$true} 12{$szMaItem[$ii].UnRead=$false} }; $cc0=$cc;
}; return}##_★
};};
##-------------------------------------------------------------------------
4.5 メール受信BOXの表示
(1) 上記と同じ操作で[usr編集]を開きます。
(2) 次のXX行をコピペして【追加貼付】後、[保存]から終了します。
(3) アプリ再起動又は [ツール]>usr[再設定] で設定します。
##★No10: 受信BOX項目の表示------------------------------------------------
(MenuSet 13 );
( ssDMnMSet "受信BOXの表示" ).add_Click({ ssMailAct !MGet "6;0;1" ; MsgBox $szMailDtGet "960,460" "受信BOX" 11 });
##-------------------------------------------------------------------------
補足説明
別途記載予定です。とりあえずご利用頂くと幸いします。コピペリスト
次のコピペリストは「初級編、中級編」の一式リストです。(1) [ツール]>[usr編集]>[PSW入力]>[0000 キー入力]>[Enter]で開きます。
(2) 次のCopy釦押下>張付け>保存後>usr[再設定] で利用可能です。
##★No1: メモの登録(各メニューへ)----------------
if($szUsrSts-eq $null){ $global:szUsrSts=1;
(MenuSet 8 "!tmp\!雑記メモ1" )
(MenuSet 8 "!tmp\!雑記メモ2" )
(MenuSet 8 "!tmp\!雑記メモ3" )
(MenuSet 8 "!tmp\!雑記メモ4" )
(MenuSet 9 "!tmp\!ヘルプメモ" )
(MenuSet 12 "!tmp\!ツールメモ" )
(ssDMnMSet "usr[再設定]" ).add_Click({ . $flusr });
};
##-----------------------------------------------
##★ツール2[13]の新規登録(再Load->再設定)-------
(MenuSet 13 "!Set::ツール2" );
( ssDMnMSet "[usr]初級編(Web)" ).add_Click({ start "https://ryupapa008.blogspot.com/2025/11/blog-post.html" });
##
##★No2:サブメモ登録-----------------------------
(MenuSet 13 "!Act::サブメモ一覧
メモAAA ; &Dir !tmp
メモBBB ; &Dir !tmp
メモCCC ; &Dir !tmp
メモDDD ; &Dir !tmp
メモ送信AA ; &Dir !send
メモ送信BB ; &Dir !send
");
##-----------------------------------------------
##★No3:Web情報サイト登録------------------------
(MenuSet 13 "!Act::Web情報
Yahoo ; https://www.yahoo.co.jp/
MSN ; https://www.msn.com/ja-jp
日経10M ; https://www.nikkei.com/smartchart/?code=N101%2FT&timeframe=10m&interval=1Day&upperIndicators=bollinger%2Cpsar&lowerIndicators=none&eventsShow=0
");
##-----------------------------------------------
##★No41: Web便利ツール1登録--------------------
(MenuSet 13 "!Act::Web便利ツール1
カレンダ ; https://calendar.onl.jp/
時計 ; https://watch.onl.jp/
スケジュール ; https://schedule.onl.jp/
視力の検査 ; https://eye.onl.jp/
");
##-----------------------------------------------
##★No42: Web便利ツール2登録--------------------
(MenuSet 13 "!Act::Web便利ツール2
ファイル共有 ; https://file.onl.jp/
メモ共有 ; https://memo.onl.jp/
QRの読取り ; https://qrcode.onl.jp/
QRの作成 ; https://qr.onl.jp/
カメラ共有 ; https://camera.onl.jp/
色の値探索 ; https://color.onl.jp/
文字文の比較 ; https://diff.onl.jp/
ペイント画像 ; https://paint.onl.jp/
");
##----------------------------------------------
##★No51: Winコマンド1登録---------------------
(MenuSet 13 "!Act::Winコマンド1
Win設定 ; explorer ms-settings:
ドライブ管理 ; diskmgmt.msc
デバイスマネージャ ; devmgmt.msc
タスクマネージャ ; taskmgr
システムプロバティ ; sysdm.cpl
Win管理ツール ; control admintools
");
##----------------------------------------------
##★No52: Winコマンド2登録---------------------
(MenuSet 13 "!Act::Winコマンド2
アプリ一覧 ; explorer shell:AppsFolder
デスプレイ ; desk.cpl \,3
ボリューム ; sndvol
アプリ追加と削除 ; appwiz.cpl
");
##----------------------------------------------
##★No61: 翻訳★起動窓マウス釦に追加------------
if($szUsrSts2-eq $null){ $global:szUsrSts2=1;
(ssRbtMenu "クリップ>Google翻訳" ).add_Click({ start ( "https://"+( $szKKhon.replace("@@@@",(GCB)) ) ); });
};
##
##★No62: 翻訳★メール窓(Help)、マウス釦に追加--
function global:ssMaVBoxAddMenu($zpm2){
(ssDMnMenu "行設定>Google翻訳" ).add_Click({ $cc=$szKKhon.replace("@@@@",((ssBoximm !M2).SelectedText)); start ("https://$cc"); });
(ssRbtMenu "$zpm2 行設定>Google翻訳" ).add_Click({ $cc=$szKKhon.replace("@@@@",((ssRbtmm).SelectedText)); start ("https://$cc") });
};
##----------------------------------------------
##★No5/6: ファイル名の一括変更--------------------------------------------
(MenuSet 13 ); $aa=( ssDMnMSet "----" );
( ssDMnMSet "[usr]中級編(Web)" ).add_Click({ start "https://ryupapa008.blogspot.com/2025/11/blog-post_9.html" });
( ssDMnMSet "文字選択<>行選択" ).add_Click({ $mm=$szMaBox; if($mm.ReadOnly-eq $false){$mm.ReadOnly=$true}else{$mm.ReadOnly=$false} });
( ssDMnMSet "D:ファイル名の一括変更" ).add_Click({ ssUsrAct_Rnme });
##★
function global:ssUsrAct_Rnme($zpam){ if( $szMaDirGet-eq "" ){return};
$zcc=(ssVBKeyInp "[ファイル名の一括変更]" "[入力] 対象文字列 ; 変更文字列`n`n例) abcd ; xxxx " ""); if($zcc-eq ""){return};
$zcm=$zcc.split(";"); $zcc0=$zcm[0].trim(); $zcc1=$zcm[1].trim();
$zcc =((Dir $szMaDirGet -name -filter "*$zcc0*" |%{ $_.replace($zcc0,$zcc1) } )-join "`r`n");
MsgBox $zcc "720,540" "名称一括変更" 10; if( (MsgYesNo "[MSG]" "$zcc0 -> $zcc1")-ne "Yes" ){return};
Dir $szMaDirGet -name -filter "*$zcc0*" |%{ Rename-Item "$szMaDirGet\$_" ($_.replace($zcc0,$zcc1)) };
ssDirCmp !DGet 1 $szMaDirGet;
};
##-------------------------------------------------------------------------
##★No7: フォルダ内ファイルで文字検索(さくらEditorも利用)--------------------
##$zcc="C:\winfree\Sakura\sakura.exe"; if(Test-Path $zcc){;}else{ $zcc="notepad.exe" }; $global:szEditor=$zcc;
(MenuSet 13 );
( ssDMnMSet "D:フォルダ内の文字検索" ).add_Click({ if( $szMaDirGet-eq "" ){return};
$zcc=(ssVBKeyInp "[フォルダ内ファイル(txt)の文字検索] [@]さくら利用" "[入力] [@] 検索文字(ABCD))" "");
if($zcc-eq ""){return}; ssUsrAct_Grep $szMaDirGet $zcc });
##★
$global:szGrepBoxPam="860,640 10 #E0FFE4";
function global:ssUsrAct_Grep($zdir,$zpam){ $zcc0="$zdir`n"; if($zpam.startsWith("@ ")){ $zpam=$zpam.substring(1).trim(); $global:szSakura=1 };
(dir -name $zdir\*.txt)|%{ $zcc=( (SLS -enc oem -patt $zpam "$zdir\$_")-join "`n" ); if( $zcc.length-gt 5 ){ $zcc0+=$zcc+"`n" }; };
$zcc=$zcc0.replace("`r","").replace("$zdir\",""); ssMsgBoxWnd 0 0 $szGrepBoxPam $zcc "【grep検索(txt)】"; $mBox.WordWrap=$false;
$mBox.Add_DoubleClick({ $zcm=( ssWCAct $this 1 ).split(":"); $zdir=$this.Lines[0]; $zfl="$zdir\"+$zcm[0];
if( $szSakura-eq 1 -and $szEditor.contains("sakura") ){ $yy=("-y="+$zcm[1]); & $szEditor $zfl $yy; return};
(ssMaV2Box 3 $zfl); ssDirCmp !MovL $zcm[1] $szBoxMm; });
};
##-------------------------------------------------------------------------
##★No8: フォルダ/ファイルのPSW付圧縮(1項のみ)(ツール2[13]へ)-------------
$global:szTlCmpres ="C:\winfree\Lhaplus\Lhaplus.exe";
(MenuSet 13 );
( ssDMnMSet "D:Dir/File圧縮(1選択+psw)" ).add_Click({ ssUsrAct_DCmp });
( ssRbtMenu "D:Dir/File圧縮(1選択+psw)" ).add_Click({ ssUsrAct_DCmp });
##★
function global:ssUsrAct_DCmp($zpam){ if( $szMaDirGet-eq "" ){return}; $zcc0=(ssMaSetText 0);
if(Test-Path $szTlCmpres){}else{ dbg "Lhaplusをインストールし`r`nフォルダ名を確認くだい"; return};
$zpsw=(ssVBKeyInp "[PSW入力]" "zip圧縮PSWの入力`n`n$szMaDirGet\`n`n$zcc0" ( Get-Date -Format "yyyyMMdd") ); if($zpsw-eq ""){return};
Start -wait $szTlCmpres -Arg "/c:zip /p:`"$zpsw`" /o:$szMaDirGet `"$szMaDirGet\$zcc0`""; ssDirCmp !DGet 1 $szMaDirGet;
};
##-------------------------------------------------------------------------
##★No9: mail複数行の選択処理----------------------------------------------
(MenuSet 13 ); $aa=( ssDMnMSet "----" );
( ssDMnMSet "M:未読に戻す(受信Box" ).add_Click({ ssMailAct3 !MCmp 11 });
( ssDMnMSet "M:読済み設定(受信Box" ).add_Click({ ssMailAct3 !MCmp 12 });
##★MCmp:選択行処理( 11:未読に戻す 12:読み済み
function global:ssMailAct3($zcmd,$zpam){ switch($zcmd){
!MCmp{ $zcc0=$szMaBox.SelectedText;
foreach($cc in $zcc0.split("`n") ){ $cc=$cc.trim(); if( ($cc.length-lt 12)-or($cc-eq $cc0) ){continue}; $ii=$cc.substring(0,17);
switch($zpam){ 11{$szMaItem[$ii].UnRead=$true} 12{$szMaItem[$ii].UnRead=$false} }; $cc0=$cc;
}; return}##_★
};};
##-------------------------------------------------------------------------
##★No10: 受信BOX項目の表示------------------------------------------------
(MenuSet 13 );
( ssDMnMSet "受信BOXの表示" ).add_Click({ ssMailAct !MGet "6;0;1" ; MsgBox $szMailDtGet "960,460" "受信BOX" 11 });
##-------------------------------------------------------------------------