●PSHメモ帳の機能が使えるマルチ利用Sch帳を組込む
◎毎日利用するPSHメモ帳からスケジュールや予定や日記を登録利用できると大変便利です。このGUIパワーシェルのSch帳処理はマルチ利用でき、予定帳Aを私用、予定帳Bを仕事、日々の日記帳、更に趣味日記などTopPageに登録すれば複数のスケジュール帳、予定帳、日記帳として使い分けできます。◎利用概要
- 祭日など利用毎の年間予定を[年間帳①]に登録([年間帳の編集]釦利用、祭日は自動登録)
- 直近数ヶ月の予定等を曜日縦列の[Sch帳②]に登録([曜日生成]釦利用)
- Sch帳②表示状態で年間帳①の[Sch帳へ反映]釦を押して反映します。(何度でも可能)
- [当日][当日/今月の表示]釦を使って日々Sch帳を表示・編集して使います。
- 予定帳Aは事前登録し日々[当日]表示、日記帳はPC利用終了で数行記載して利用
- スケジュール帳は[時間生成]釦で時間行を登録して利用(私は予定帳Bを利用)
<戻る 進む>
●起動画面
◎[ツール3]->[予定帳A]/[予定帳B]/[日記帳]の押下で表示
左窓から[スケジュール帳(予定帳B)②] [予定帳A②] A帳の[年間帳①] A帳の[当日]の各表示窓
[wGuiPsh2]
★メニュの各機能
◎[当日(5日間)]..Sch帳の今日から5日間の予定を専用窓に表示(印字等でwinメモ帳表示も可能)
◎[当日のSch表示]..Sch帳の今日の箇所近くから表示(PSHメモ帳)
◎[今月のSch表示]..Sch帳の今月の箇所近くから表示(PSHメモ帳)
◎縦列の[曜日生成].カーソル位置に指定月の曜日を縦列に展開
曜日は「月/年(例 5/2026) 指定」で展開(今年は年を省略可)
◎[年間帳の登録日編集]..年間の休日/祭日/指定日/予定日等を年間登録ファイルに登録編集
[!#]行でコメント行を追加登録可能
◎[年間帳をSch帳へ反映]..年間登録ファイルの[日付]行と[!#]行を->Sch帳の当該各行と入れ替える
なおSch帳の[!#]行中に[;]がある行は入れ替えずそのまま残る
入替の例「年間帳:[02/11 建国記念の日」のとき
◎[来年:予定のSch帳]....来年ファイルでSch帳を表示
◎[来年:年間帳の登録日編集]..来年ファイルで同上
◎[来年:年間帳をSch帳へ反映]..来年ファイルで同上
◎縦列[時間生成](マウス位置)..マウス位置に0800~1800の時間行を展開する(マウス右釦にも登録)
★バックアップ機能(2段BackUp)
①File保存のときPSHメモ帳の[File保存]->[Y]で前回Fileを[bak]フォルダにバックアップします。
②PSHメモ帳起動後の最初のSch帳表示のとき[sch\bak]フォルダに[Sch帳ファイル名_bak[n].txt]でバックアップします。
[n]=Day%5 の 0~4 を付加します。例 2/3:n=3、2/5:n=0、2/6:n=1、2/7:n=2
★Sch帳の起動/設定
◎[起動] sys\wPshSchAct101.ps1 [args0 [args1 [args2 [args3]]]]
★Sch窓のマルチ利用例(TopPageに登録)
##★SCH帳のマルチ登録利用
★補足..今回のユーザ拡張には次の記事[Gui窓DB]の登録処理も含まれます。
◎[List4.3.1] sys\wndPshPrg201_usr.ps1..ユーザ拡張file
左窓から[スケジュール帳(予定帳B)②] [予定帳A②] A帳の[年間帳①] A帳の[当日]の各表示窓
![]() |
Sch帳マルチ画面/スケージュール帳/予定帳/年間帳/当日窓 |
●組込み方法
◎[4.2]応用編を対応後は以下にて組込みます。- 下記[List4.3.1]の[Copy]押下->PSHメモ帳[ツール2]->[Ps1アプリ更新]->[Y]押下
- 下記[List4.3.2]の[Copy]押下->PSHメモ帳[ツール2]->[Ps1アプリ更新]->[Y]押下
◎はじめての方、[4.2]応用編未対応の方は、お手数ですが[4.2]応用編を対応してください。またWindowsメモ帳を使ってコピペ操作で下記ファイル(5つ)を直接作成してもOKです。([名前を付けて保存]時ANSI設定を確認ください)
◎PSHメモ帳:フォルダ/ファイル構成
[wGuiPsh2]
+wPshMemo301.bat (List3.9.2 -> [4.1]応用編[sys\]追加:TopPage)
+sys
+wPshPrg201.ps1 (List4.2.2: 本体)
+wPshPrg201_add.ps1 (List4.2.3:機能拡張)
+wPshPrg201_usr.ps1 (List4.3.1今回)
+wPshSchAct101.ps1 (List4.3.2今回)
●利用説明
![]() |
予定帳A/予定帳B/日記帳の切替えとSch帳メニュ |
★メニュの各機能
◎[当日(5日間)]..Sch帳の今日から5日間の予定を専用窓に表示(印字等でwinメモ帳表示も可能)
◎[当日のSch表示]..Sch帳の今日の箇所近くから表示(PSHメモ帳)
◎[今月のSch表示]..Sch帳の今月の箇所近くから表示(PSHメモ帳)
◎縦列の[曜日生成].カーソル位置に指定月の曜日を縦列に展開
曜日は「月/年(例 5/2026) 指定」で展開(今年は年を省略可)
◎[年間帳の登録日編集]..年間の休日/祭日/指定日/予定日等を年間登録ファイルに登録編集
[!#]行でコメント行を追加登録可能
◎[年間帳をSch帳へ反映]..年間登録ファイルの[日付]行と[!#]行を->Sch帳の当該各行と入れ替える
なおSch帳の[!#]行中に[;]がある行は入れ替えずそのまま残る
入替の例「年間帳:[02/11 建国記念の日」のとき
Sch帳:[02/11(火)aaaaaa!# 建国XX !##bbbbbbb
VV
Sch帳:[02/11(火)aaaaaa!# 建国記念の日 !##bbbbbbb
◎[来年:予定のSch帳]....来年ファイルでSch帳を表示◎[来年:年間帳の登録日編集]..来年ファイルで同上
◎[来年:年間帳をSch帳へ反映]..来年ファイルで同上
◎縦列[時間生成](マウス位置)..マウス位置に0800~1800の時間行を展開する(マウス右釦にも登録)
★バックアップ機能(2段BackUp)
①File保存のときPSHメモ帳の[File保存]->[Y]で前回Fileを[bak]フォルダにバックアップします。
②PSHメモ帳起動後の最初のSch帳表示のとき[sch\bak]フォルダに[Sch帳ファイル名_bak[n].txt]でバックアップします。
[n]=Day%5 の 0~4 を付加します。例 2/3:n=3、2/5:n=0、2/6:n=1、2/7:n=2
★Sch帳の起動/設定
◎[起動] sys\wPshSchAct101.ps1 [args0 [args1 [args2 [args3]]]]
- args0:1/11: 起動時SCH帳の表示
args0:null/0/1: PSHメモ帳モード指定
args0:10/11: Gui基本窓/PSH基本窓モード指定 - args1:Schファイル先頭文字(初期時"wPshSch" 変更例 "zAbcSch")
- args2:[予定帳]釦の名前指定
- args3:[予定帳]のフォルダ指定(初期時"sch")
★Sch窓のマルチ利用例(TopPageに登録)
##★SCH帳のマルチ登録利用
&&& . $fladdSch ##[WC][予定帳A]..ツール3に登録
&&& . $fladdSch 0 "zPsh" ##[WC][予定帳B]..ツール3に登録
&&& . $fladdSch 0 "zNiki" "日記帳" ##[WC][日記帳]..ツール3に登録
&&& . $fladdSch 0 "zSymi" "趣味日記" "schAB" ##[WC]★[趣味日記]の利用
★補足..今回のユーザ拡張には次の記事[Gui窓DB]の登録処理も含まれます。
●こぴぺリスト
◎[List4.3.1] sys\wndPshPrg201_usr.ps1..ユーザ拡張file
##Ver1.58 wndPshPrg201_usr.ps1 by ryu 2024/1215 ####################################
##●●PSHメモ帳:機能追加その4.4(usr)
##
##★メニュ3へ登録設定
$global:szMnBas=$szMenu11;
if($szMnTool3-eq $null){ $global:szMnTool3=1; $global:szPshMemoSts=1;
($global:szMnBas=ssDMnMSet "[予定帳A]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch }; });
(ssDMnMSet "[予定帳B]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch 0 "zPsh" }; }); $global:szMnBas=$szMenu11;
(ssDMnMSet "[日記帳]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch 0 "zNiki" "日記帳" }; });
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "[マクロ一覧]" ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,540"; $mBox.BackColor="#E8FFD0";});
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "DB[Winコマンド300窓] L12" ).add_Click({ ssBatAct winCmd251.bat L12 });
(ssDMnMSet "DB[Psh短文登録窓] L23" ).add_Click({ ssBatAct wndPshShort151.bat L23 });
($global:szMenu11A=ssDMnMSet "★DB:Gui窓DB->" ).add_Click({ ssBatActSet;});
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "[キー入力処理テスト]" ).add_Click({ ssDlgKeyInp !Imp1 "キー入力[RET]" "AAA" });
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "[<usr編集>]" ).add_Click({ & $szEditor $fladd2 });
(ssDMnMSet "[<usr再ロード>]" ).add_Click({ . $fladd2; dbg "再ロード`n`n$fladd2" });
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "[ps1アプリ更新]" ).add_Click({ ssPs1VerUp1 });
(ssDMnMSet "[<Sch編集>]" ).add_Click({ & $szEditor $fladdSch });
##★文字色BOXへのサイズ/背景色/フォント設定の追加
$global:szLstSize +="[サイズ:22],[サイズ:24],";
$global:szLstColr +="[黄緑色:#DBFFB6],[薄水色:#C6FFFE],";
$global:szFntKind +=@("HG丸ゴシックM-PRO");
};
##★Web検索List&スーパ検索処理
##
$global:szLstMacro="【マクロ一覧V2.0】
★Web検索:例[&KKK コピペ gui]でダブルクリック[WC]
#-&マクロ,-名称,----------Web-Url------------------------------------#
&KKK, Msn検索, https://www.bing.com/search?q=
&KKG, Google検索, https://www.google.co.jp/search?q=
&KKY, Yahoo検索, https://search.yahoo.co.jp/search?p=
&KKB, Bing検索, https://www.bing.com/search?q=
&KKA, Amazon, https://www.amazon.co.jp/s?k=
&KKM, モノタロウ, https://www.monotaro.com/s/?c=&q=
&KKR, R楽天市場, https://search.rakuten.co.jp/search/mall/
&KK5, 一括検索5, KKK/KKG/KKY/KKA/KKR
&KK3, 一括検索3, KKA/KKM/KKR
★(add登録:例[&KBC 8233 8848 9064]で[WC])
&KBD, 株Doraチャート, https://www.kabudragon.com/s?t=
&KBC, Cost株価Yahoo, https://finance.yahoo.co.jp/search/?query=
&KBY, Yahooチャート, !YahooCha
&KBT, 株Tan情報, !KtanCha
&KBN, 日経チャート, !NikeiCha
★(addで登録)
&KEI, keisan計算[31]
&KEY, 自動キー操作[32]
&FS, 説明文 ;file名 ##マルチ窓起動(&FSet)
&FS&, 説明文 ;file名 ##入替え(&FSet&)
★(usrで登録)
&BAT, GuiPsh-Bat処理; srcbat(L11/L12/L13/L21/L22/L23)
";
##★[WC]起動 [&XXXX]マクロの登録
##
function global:ssWClkUsrCmd($ln,$zcc){ ##return 0;
$zcmd=$zcc.split(" ")[0]; $zcc1=($zcc.substring(5)).trim(); ##dbc "$ln $zcmd $zcc1";
switch( $zcmd.substring(0,3) ){
"&KK" { return (ssWebSach $zcmd !cp1 $zcc1); } ##List利用
"&KB" { return (ssWebSach $zcmd !cp5 $zcc1); } ##List利用
"&BA" { $zcc="ssBatAct $zcc1"; Iex($zcc); return 1;}
}; return 0;
};
##★マクロList処理
##
function global:ssWebSach($zcmd,$zsub,$zcc1){ $zcm=$szLstMacro.split(",`n");
for($ii=0; $ii -lt $zcm.length; $ii++ ){ if(($zcm[$ii].trim()) -ne $zcmd){continue;}; break; }; $zcc=($zcm[$ii+2]).trim();
if( $zcc.startsWith("http") ){ $zcc+=$zcc1; Iex( "Start `'$zcc`'" ); Start-Sleep -m 500; return 1; };
switch($zsub){
!cp1 { if( [int]($zcmd.substring(3,1)) -ge 1 ){ foreach($cc in $zcc.split("/")){ if($cc.length -eq 3){ ssWebSach "&$cc" !cp1 $zcc1; }; }; return 1; }; }
!cp5 { if( $zcc.startsWith("!") ){ ssKabView $zcc $zcc1; }; return 1; }
}; return 0;
};
##★PS1ファイル半自動VerUP(一旦MsgBoxに表示->Ver確認OK->BackUP->画面入替->[File保存])
##
function global:ssPs1VerUp1(){ $zcc0=((Get-Clipboard)-join "`r`n");
if( $zcc0.startsWith("##Ver") ){;}else{ dbg "[★]更新ps1ファイルをマウスコピー取得ください"; return; };
MsgBox $zcc0 "1280,760"; $mBox.Font="$szFont,11"; $mBox.BackColor="#E5F2FE";
$zcm=($mBox.Lines[0]).split(" "); $zvr21=$zcm[0].replace("#",""); $zcc22=$zcm[1].trim(); $zcc24=$zcm[3].trim();##[ryu]
if( $zcc22.endswith('.ps1')-and $zcc24.contains('ryu') ){$zfl="$szToolDir\$zcc22"; }else{ dbg "[★]pshファイルでないため処理不可"; return; };
if( Test-Path $zfl){ $zccm=(cat $zfl); $zvr11=(($zccm[0]).split(" "))[0].replace("#","");
$zBakDir=$szToolDir+"Bak"; if(Test-Path $zBakDir -PathType Container){;}else{ New-Item $zBakDir -ItemType Directory };
$zflbak=("$zBakDir\$zcc22"+"_$zvr11").replace(".","_")+".txt"; }else{ $zvr11="V00"; $zflbak=""; };
$zcc3="`n[File名]`n$zfl`n`n[現在] $zvr11 ---> [更新] $zvr21";
if( $zvr11.startsWith("V")-and $zvr21.startsWith("Ver")-and ($zvr11-ne $zvr21) ){;}else{ dbg "$zcc3`n`n[★]同一VerなどでNG"; return; };
if( (ssMsgYesNo "MSG" "[★]更新のとき[Y]を押下`n`n$zcc3`n`n[BakUP_File]`n$zflbak")-ne "Yes" ){ return;};
if( Test-Path $zfl){ Copy-Item $zfl $zflbak -Force; }; SC $zfl $zcc0 -Force;
};
##★キー入力BOX窓:fmKeyBox(KeyBox) ##キー入力[return]で起動
## cmd:処理No ch0:入力コメント ch1:初期値
function global:ssDlgKeyInp( $zcmd, $zchr0, $zchr1){ $global:fmKeyBox=New-Object Form -Pro @{ Size="600,100"; StartPosition ="manual"; TopMost=$true; };
$global:KeyBox =New-Object TextBox -Pro @{ Location ="5,5"; Size ="575,50"; Font ="Meiryo UI,12";}; $fmKeyBox.Controls.Add( $KeyBox );
$fmKeyBox.Location=New-Object Drawing.Point( ([Cursor]::Position.X -300),([Cursor]::Position.Y -20) ); $fmKeyBox.Show();
$global:szKeyMode =$zcmd; $fmKeyBox.text =$zchr0; $KeyBox.text =$zchr1;
##キー入力
$KeyBox.Add_KeyPress({ if( $_.KeyChar -ne "`r" ){ return;}; $_.Handled =$true; $fmKeyBox.Visible =$false;
$zmd=$szKeyMode; $zcc=$KeyBox.Text; if( $zcc -ne ""){ ssKeyCmp1 $zmd $zcc; ssKeyCmp2 $zmd $zcc; ssKeyCmp3 $zmd $zcc;};
});
}; function global:ssKeyCmp1($zmd,$zcc){}; function global:ssKeyCmp2($zmd,$zcc){}; function global:ssKeyCmp3($zmd,$zcc){};
##★キー入力テスト
function global:ssKeyCmp3($zmd,$zcc){if($zmd -eq "!Imp1" ){ dbg $zcc; }; };
##★月日スケジュ処理
$global:fladdSch="sys\wPshSchAct101.ps1";
##★DB:GUI基本窓DB生成
##
function global:ssBatActSet(){ if( $szBatActSet-eq $null ){ $global:szBatActSet=1;}else{ return;};
$global:szMnBas=$szMenu11A; $szMenu11A.Text="[Gui窓DB]"
## (ssDMnMSet "L13 [Gui窓のadd機能ps1]" ).add_Click({ ssBatAct winCmd251_add.ps1 L13 });
(ssDMnMSet "L11 [Gui基本窓]" ).add_Click({ ssBatAct winCmd051.bat L11 });
(ssDMnMSet "L21 [Psh基本窓]" ).add_Click({ ssBatAct wndPsh151.bat L21 });
(ssDMnMSet "L22 [Psh入門窓]" ).add_Click({ ssBatAct wndPshKiso151.bat L22 });
(ssDMnMSet "L25 [ssPshメモ帳]" ).add_Click({ ssBatAct ssPshMemoPup.bat L25 });
(ssDMnMSet "L262[Psh分割窓TopPage]").add_Click({ ssBatAct wndPshList051.bat L262 });
(ssDMnMSet "L261[Psh分割窓アプリ部]" ).add_Click({ ssBatAct ..\sys\wndPshPrg001.ps1 L261 });
};
##★GUI基本窓DB生成処理
function global:ssBatAct($zfl,$zmod,$zsub ){ $zDir=$szToolDir+"\..\ssbat"; $zzFl="$zDir\$zfl";
if( Test-Path $zDir -PathType Container ){;}else{ New-Item $zDir -ItemType Directory };
if( ($zsub-eq $null)-and(Test-Path $zzFl)-and( (Cat $zzFl).length -ge 2 ) ){ ##bat起動
if( ($zmod-ne $null)-and (Test-Path $zmod) ){;}else{ $zmod=$szFile; if( $zmod-eq "" ){ $zmod="None" }; };
Start -NoN Cmd -Arg "/c $zzFl $zmod" ; return;
};
$zcc="https://ryupapa008.blogspot.com/"; ## <a name="_List1.1.1"> </a>#
$zcc1="
L11,@url2024/08/guiwin.html#_List1.1.5
L12,@url2024/08/guiwin_24.html#_List1.2.5
L13,@url2024/08/guiwin_9.html#_List1.3.1
L21,@url2024/08/guipsh.html#_List2.1.5
L22,@url2024/08/guipsh_24.html#_List2.2.5
L23,@url2024/08/guipsh9.html#_List2.3.5
L25,@url2024/12/sspsh25.html#_List2.5.5
L261,@url2024/08/gui.html#_List2.6.1.1
L262,@url2024/08/gui.html#_List2.6.1.5
";
##★File追加
$zcm=$zcc1.split(",`n");
for($ii=0; $ii-lt $zcm.length; $ii++){
$cc=$zcm[$ii].trim(); if( $cc-eq $zmod ){ $zcc=$zcm[$ii+1].replace("@url",$zcc); break; };
}; $zcc=$zcc.trim();
start $zcc; ssPshAct 1 "$szTool $fln $zzFl";##Web表示 ##Pshメモ帳起動
};
◎[List4.3.2] sys\wPshSchAct101.ps1..Sch帳アプリfile
##Ver1.01 wPshSchAct101.ps1 by ryu 2024/12/29 ##################
##●●月日スケジュール予定帳処理関数 by ryu
##ACT: wPshSchAct101.ps1 [args0 [args1 [args2 [args3]]]]
##Call: ssFileSet/(ssDlgKeyInp/MsgBox/ssPshAct)
##★利用Dir/利用File文字
if( $fladdSch -eq $null ){ $fladdSch="sys\wPshSchAct101.ps1"; };
if( $Args[0] -ne $null ){ $global:szSchSts=$Args[0];}; ##起動時のSCH表示(1/11)/動作Mode(10/11)
if( $Args[1] -eq $null ){ $global:szSchCha="wPsh"; }else{ $global:szSchCha=$Args[1] };
if( $szSchCha -eq "wPsh" ){ $global:szSchName="予定帳A" }else{ $global:szSchName="予定帳B" };
if( $Args[2] -ne $null ){ $global:szSchName=$Args[2]; };
if( $Args[3] -eq $null ){ $global:szSchDir="sch"; }else{ $global:szSchDir=$Args[3]; }; ##予定帳DIRの指定
##★Schフォルダ
if(Test-Path $szSchDir -PathType Container){;}else{ New-Item $szSchDir -ItemType Directory };
if(Test-Path "$szSchDir\bak" -PathType Container){;}else{ New-Item "$szSchDir\bak" -ItemType Directory };
##
$global:szSchYear=(Get-Date -Format yyyy);
$global:szSchMnth=(Get-Date -Format MM);
$global:szSchDay =(Get-Date -Format dd);
$global:szSchLMst00="$szSchDir\$szSchCha"+"Mst";
$global:szSchFile00="$szSchDir\$szSchCha"+"Sch";
## $global:szFile=""; ##メモ帳AB入替(PSHメモ帳の処理中ファイル)
$global:szSchFile="$szSchFile00"+$szSchYear+".txt";
##
if( $szMenu15-eq $null ){
##★メニュ登録
$global:szMenu15=(ssDMnMenu $szSchName); $szMenu15.ForeColor="Blue";
($global:szMnBas=ssDMnMSet "[当日(5日間)]" ).add_Click({ ssSchAct !YDSP 0 });
(ssDMnMSet "[Winメモ帳]で開く" ).add_Click({ ssSchAct !YDSP 1 });
$global:szMnBas=$szMenu15;
(ssDMnMSet "[当日から表示(Sch帳)]" ).add_Click({ ssSchAct !DDSP $szSchFile });
(ssDMnMSet "[今月の表示(Sch帳)]").add_Click({ ssSchAct !MDSP $szSchFile });
(ssDMnMSet "縦列の[曜日生成](マウス位置)" ).add_Click({ ssDlgKeyInp !Cmp5 "【月/年】例 10/2024 [RET]" ([int]$szSchMnth) });
$aa=(ssDMnMSet "----【今年】---------------" );
## (ssDMnMSet "予定/日記帳の[Sch帳編集]").add_Click({ ssSchAct !SDSP $szSchYear });
(ssDMnMSet "[年間帳の編集](祭日など)").add_Click({ ssSchAct !DTRK $szSchYear });
(ssDMnMSet "年間帳を[Sch帳へ反映]").add_Click({ ssSchAct !DCHG $szSchYear });
$aa=(ssDMnMSet "----【来年】---------------" );
(ssDMnMSet "来年[Sch帳の編集]").add_Click({ ssSchAct !SDSP ([int]$szSchYear+1) });
(ssDMnMSet "来年[年間帳の編集]").add_Click({ ssSchAct !DTRK ([int]$szSchYear+1) });
(ssDMnMSet "来年[年間帳をSch帳へ反映]").add_Click({ ssSchAct !DCHG ([int]$szSchYear+1) });
$aa=(ssDMnMSet "----" );
(ssDMnMSet "縦列[時間生成](マウス位置)" ).add_Click({ ssSchAct !TMAK 0 });
(ssDMnMSet "[利用HELP]" ).add_Click({ ssSchHelp });
$aa=(ssDMnMSet "----" );
(ssDMnMSet "[年指定で年間帳の編集]" ).add_Click({ ssDlgKeyInp !Cmp6 "【年】例 2024 [RET]" $szSchYear;});
(ssDMnMSet "[explorer]->bak" ).add_Click({ $zcc=[String](pwd)+"\$szSchDir"; explorer $zcc });
(ssDMnMSet "[祝祭日の意(内閣府)]").add_Click({ Start "https://www8.cao.go.jp/chosei/shukujitsu/gaiyou/kaku.html" });
(ssDMnMSet "[日めくりカレンダ]" ).add_Click({ Start "https://www.himekuricalendar.com/year$szSchYear" });
(ssDMnMSet "[<Sch編集>]" ).add_Click({ notepad $fladdSch });
##★右釦メニュ追加
(ssRbtMenu "縦列[時間生成](マウス位置)" ).add_Click({ ssSchAct !TMAK 0 });
##★複数窓/単窓対応Dmy登録
if( $szSchSts-ge 10 ){
function global:ssFileSet2($zfl){ ssFileSet $zfl };
function global:ssMsgYesNo($cc0,$cc1,$cc2){ MsgYesNo $cc0 $cc1 $cc2 };
Add-Type -Assembly Microsoft.VisualBasic;
function ssDlgKeyInp($zcmp,$zMsg,$zVal){
$zcc=[Microsoft.VisualBasic.Interaction]::InputBox($zMsg,"MSG",$zVal); ssKeyCmp1 $zcmp $zcc; };
function MsgBox($cc,$ww){ $fmM=New-Object Form -Pro @{Size=$ww}; $mB=New-Object TextBox -Pro @{ Font="BIZ UDゴシック,13"; Dock="Fill";
Multiline=$True; BackColor="#FFEDDA";}; $fmM.Controls.Add($mB); $mB.Text=($cc.replace("`n","`r`n")); $mB.SelectionStart=0; $fmM.Show();};
}else{
function global:ssFileSet2($zfl){ ssPshAct 1 "$szTool $fln $zfl" };
};
##★月日スケジュールFile表示(新規はssSchAct登録後に生成)
if( ($szSchSts-eq 1)-or ($szSchSts-eq 11) ){ if( Test-Path $szSchFile ){ ssFileSet $szSchFile }else{ $global:szSchSts=20 }; };
};
##★予定帳Dir選定
$global:szMenu15.Text=$szSchName
##★キー入力処理
function global:ssKeyCmp1($zmd,$zcc){ switch($zmd){
!Cmp5 { ssSchAct !DMAK $zcc; return;}
!Cmp6 { ssSchAct !DTRK $zcc; return;}
};};
##★月日の生成(cmd=//0:順列//1:逆列 yy0:年 mmm:月
##
function global:ssWeakMake( $zcmd,$zyy0,$zmmm ){ $zyy0=[int]$zyy0; $zmmm=[int]$zmmm; if( $zmmm -gt 12 ){ $zyy0++; $zmmm-=12;};
$zii0= (get-date (get-date -format "$zyy0/$zmmm/01")).DayOfWeek.value__ ; $zcc2 ="##★$zyy0"+"年$zmmm"+"月`r`n";
$zdd2=31;if( ($zmmm-eq 4)-or ($zmmm-eq 6)-or ($zmmm-eq 9)-or ($zmmm-eq 11) ){ $zdd2=30;};
if( $zmmm-eq 2 ){ $zdd2=28; if( ($zyy0-eq 2024)-or ($zyy0-eq 2028)-or ($zyy0-eq 2032) ){$zdd2=29; }; };
$zcm0="日,月,火,水,木,金,土,日".split(","); $dd0 =$zmmm*100+1; if( $dd0 -lt 1000){ $zcc1="0"; }else{ $zcc1=""; };
for($ii=0; $ii -lt $zdd2; $ii++){ $cc="["+$zcc1+$dd0+"("+$zcm0[$zii0%7]+")`r`n"; $dd0++; $zii0++;
$zcc=$cc.substring(0,3)+"/"+$cc.substring(3); if($zcmd -eq 0){ $zcc2+=$zcc; }else{ $zcc2=$zcc+$zcc2; };
}; return $zcc2;
};
##★スケジュSch帳の処理 $szSchMnth
##
function global:ssSchAct($zcmd, $zpam){ switch($zcmd){
!DSCH{ ##★スケジュSch帳の生成(zpam:今年/来年)
$zfl ="$szSchFile00"+$zpam+".txt"; if($zpam-eq $szSchYear){ $zpm2=$szSchMnth; }else{ $zpm2=1; };
$zcc ="#![管理] @BakColor:#e0ffc1 @FntSize:13 @WndSize:1080,720`r`n`r`n";
$zcc+="&FS ★年間帳File ;$szSchLMst00$zpam.txt`r`n";
$zcc+="&FS ★Sch帳File ;$szSchFile00$zpam.txt ##昨年は[年-1]で表示`r`n`r`n";
$zcc+=( ssWeakMake 0 $zpam $zpm2 )+"`r`n";
##
if( (ssMsgYesNo "【Sch帳File登録OK?】" "[$zfl]`n`n$zcc" )-ne "Yes" ){ return;};
$zcc+=( ssWeakMake 0 $zpam ([int]$zpm2+1) )+"`r`n";
SC $zfl $zcc; ssFileSet $zfl;
return;}
!SDSP{ ##★スケジュSch帳の表示(zpam:今年/来年)
$zfl ="$szSchFile00"+$zpam+".txt";
if(Test-Path $zfl){ ssFileSet $zfl; }else{ ssSchAct !DSCH $zpam; };
return;}
!DCHG{ ##★すけじゅSch帳行入替(zpam:今年/来年)
$fln0="$szSchLMst00$zpam"+".txt"; if( Test-Path $fln0 ){ $zcm0=Cat $fln0;}else{ dbg "登録File無し"; return;}; ##休日&行事
if( $szFile-eq $fln0 ){ $zfl="$szSchFile00"+$zpam+".txt";}else{ $zfl=$szFile; if($zfl-eq ""){ return;}; };
if( Test-Path $zfl ){$global:szFile=$zfl; $zcm1=Cat $szFile;}else{ dbg "Sch帳無し"; return;}; ##スケジュール帳or窓表示File
$zcc00=""; $zfg=0;
foreach($cc1 in $zcm1){ $cc1=$cc1.trim();
if( $cc1.startsWith("[") ){;}else{
if( $cc1.startsWith("!#") ){ if( $cc1.contains(";") ){;}else{continue;}; }; $zcc00+="$cc1`n"; continue; };
$zcc=$cc1.substring(0,6); $zfg=0;
foreach($cc in $zcm0){ $cc=$cc.trim();
if($cc.startsWith($zcc) ){ $zcm1=$cc1-split("!#");
$cc1=$zcm1[0]+"!#"+$cc.substring(6)+" !#"+$zcm1[2]; $zfg=1; $zcc00+="$cc1`n"; continue; };
if($zfg-eq 1){ if($cc.startsWith("!#")){ $zcc00+="$cc`n"; continue; }else{ break; }; };
};
if($zfg-eq 0){ $zcc00+="$cc1`n"; };
};
$znn=$tBox.SelectionStart; $tBox.Text=$zcc00.replace("`r","").replace("`n","`r`n");
$tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret(); $tBox.SelectionStart=$znn; $tBox.ScrollToCaret();
if( (ssMsgYesNo "MSG" "[反映OK]?")-ne "Yes" ){ ssFileSet $szFile; };##NGは元に戻す
return;}
!DMAK{ ##★縦列の曜日生成( 月/年 )
$zcm =($zpam.trim()).split("/ "); $zdd1=[int]$zcm[0]; $zdd0=[int]$zcm[1];
if( $zdd0-le 2022 ){ $zdd0=[int](Get-Date -Format yyyy); };
$zcc2=ssWeakMake 0 $zdd0 $zdd1;
$tBox.SelectedText=$zcc2; ##Set-Clipboard $zcc2;
return;}
!TMAK{ ##★0800~1800行を生成
$zcc0="__0800:__0900:__1000:__1100:__1200:__1300:__1400:__1500:__1600:__1700:__1800";
$zcc2=""; foreach($cc in $zcc0.split(":")){ $zcc2+=$cc+":`r`n"; };
$tBox.SelectedText=$zcc2; ##Set-Clipboard $zcc2;
return;}
!YDSP{ ##★当日(5日間)予定窓の表示$szSchFile
$zfl=$szSchFile; if(Test-Path $zfl){;}else{ "Sch帳File無し->作成ください"; return;};
$zcc0=Cat $zfl -Raw;
$dd0= "`n["+ ( Get-Date -Format MM/dd );
$nn0= $zcc0.indexof( $dd0,0); if( $nn0 -ge 0 ){;}else{ return; };
$nn1= $zcc0.indexof("`n[", ( $nn0 + 1 ) ); if( $nn1 -ge 0 ){;}else{ return; };
##$global:szTodaySch=$zcc0.Substring($nn0, ($nn1 - $nn0)); ##1日分
##4日分追加([[]を4列追加)
$nn2= $zcc0.indexof("`n[", ( $nn1 + 1 ) ); if( $nn2 -ge 0 ){ $nn1=$nn2; }else{ $nn2=$nn1; };
$nn2= $zcc0.indexof("`n[", ( $nn1 + 1 ) ); if( $nn2 -ge 0 ){ $nn1=$nn2; }else{ $nn2=$nn1; };
$nn2= $zcc0.indexof("`n[", ( $nn1 + 1 ) ); if( $nn2 -ge 0 ){ $nn1=$nn2; }else{ $nn2=$nn1; };
$nn2= $zcc0.indexof("`n[", ( $nn1 + 1 ) ); if( $nn2 -ge 0 ){ $nn1=$nn2; }else{ $nn2=$nn1; };
$zTodaySch=$zcc0.Substring($nn0, ($nn1 - $nn0));
if( $zpam-eq 1 ){ $zfl2="$szSchFile00"+"_Today.txt"; SC $zfl2 $zTodaySch; notepad $zfl2; return; };
MsgBox ("【本日の予定】"+ $zTodaySch ) "800,400"; ##1:マウス位置の指定
return;}
!DDSP{ ##★今日のSch表示
if(Test-Path $zpam){ ssFileSet $zpam; ssSchAct !BKUP $zpam; }else{ dbg "Sch帳File無し->作成ください"; return;};
$tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret();
$dd0= "`n["+ ( Get-Date -Format MM/dd ) ; ##Get-Date -Format yyyyMMdd
$cc0= $tBox.Text; $nn0= $cc0.indexof( $dd0 ,0); if( $nn0 -ge 0 ){;}else{ return;};
$tBox.SelectionStart=$nn0; $tBox.ScrollToCaret();
return;}
!MDSP{ ##★当月のSch表示
if(Test-Path $zpam){ ssFileSet $zpam; ssSchAct !BKUP $zpam; }
else{ if( (ssMsgYesNo "MSG" "Sch帳File無し->[作成しますか(Y/N)]?")-eq "Yes" ){ ssSchAct !SDSP $szSchYear}; return;};
$tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret();
$dd0= "`n["+ ( Get-Date -Format MM ) ; ##Get-Date -Format yyyyMMdd
$cc0= $tBox.Text; $nn0= $cc0.indexof( $dd0 ,0); if( $nn0 -ge 0 ){;}else{ return;};
$tBox.SelectionStart=$nn0; $tBox.ScrollToCaret();
return;}
!BKUP{ ##★予定/日記帳のBackUp
if( ($szSchFilBak-eq $null)-or ($szSchFilBak-ne $zpam) ){;}else{ return;};
$global:szSchFilBak=$zpam; $nn=[int]$szSchDay; $nn%=5;
$zfl=$zpam.replace("\$szSchCha","\bak\$szSchCha").replace(".txt","_bak$nn.txt");
if(Test-Path $zpam ){ Copy-Item $zpam $zfl -Force; dbc "[BakUP] $zfl";};
return;}
!DTRK{ ##★休日/祭日等の登録(zpam:今年/来年)
$zfl="$szSchLMst00$zpam"+".txt"; if( Test-Path $zfl ){ ssFileSet2 $zfl; return; };
##★休日の登録##初期file生成
$zcc ="#![管理] @BakColor:#c1fffe @FntSize:13 @WndSize:560,720`r`n`r`n";
$zcc+="##Ver1.00 [年間帳]祭日/予定日/行事日の登録`r`n`r`n";
$zcc+="&FSet $zfl ##[WC]`r`n`r`n";
$zcc+="##休日/祭日:■"+$zpam+"年`r`n";
$zcc0="[01/01 元日, [01/02 正月,!#aaaaa, [01/03 正月,!#aaaaa,";
switch($zpam){
2025{ $zcc0+="[01/13 成人の日, !#あいうえお, [02/11 建国記念の日, [02/23 天皇誕生日, [02/24 休み, [03/20 春分の日, [04/29 昭和の日
[05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [05/06 休み, [07/21 海の日, [08/11 山の日
[09/15 敬老の日, [09/23 秋分の日, [10/13 スポーツの日, [11/03 文化の日, [11/23 勤労感謝の日,[11/24 休み,"; }
##
2026{ $zcc0+="[01/12 成人の日, !#あいうえお, [02/11 建国記念の日, [02/23 天皇誕生日, [03/20 春分の日, [04/29 昭和の日
[05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [05/06 休み, [07/20 海の日, [08/11 山の日
[09/21 敬老の日, [09/22 休み, [09/23 秋分の日, [10/12 スポーツの日,[11/03 文化の日, [11/23 勤労感謝の日"; }
##
2027{ $zcc0+="[01/11 成人の日, !#あいうえお, [02/11 建国記念の日, [02/23 天皇誕生日, [03/21 春分の日, [03/22 休み, [04/29 昭和の日
[05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [07/19 海の日, [08/11 山の日
[09/20 敬老の日, [09/23 秋分の日, [10/11 スポーツの日, [11/03 文化の日, [11/23 勤労感謝の日"; }
##
2028{ $zcc0+="[01/10 成人の日, !#あいうえお, [02/11 建国記念の日, [02/23 天皇誕生日, [03/20 春分の日, [04/29 昭和の日
[05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [07/17 海の日, [08/11 山の日
[09/18 敬老の日, [09/22 秋分の日, [10/09 スポーツの日, [11/03 文化の日, [11/23 勤労感謝の日"; }
##
2029{ $zcc0+="[01/08 成人の日, !#あいうえお, [02/11 建国記念の日, [02/12 休み, [02/23 天皇誕生日, [03/20 春分の日, [04/29 昭和の日
[04/30 休み, [05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [07/16 海の日, [08/11 山の日
[09/17 敬老の日, [09/23 秋分の日, [09/24 休み, [10/08 スポーツの日,[11/03 文化の日, [11/23 勤労感謝の日"; }
##
2030{ $zcc0+="[01/14 成人の日, !#あいうえお, [02/11 建国記念の日, [02/23 天皇誕生日, [03/20 春分の日, [04/29 昭和の日
[05/03 憲法記念日, [05/04 みどりの日, [05/05 こどもの日, [05/06 休み, [07/15 海の日, [08/11 山の日, [08/12 休み,
[09/16 敬老の日, [09/23 秋分の日, [10/14 スポーツの日, [11/03 文化の日, [11/04 休み, [11/23 勤労感謝の日"; }
};
foreach($cc in $zcc0.split(",`n") ){ $zcc+=$cc.trim()+"`r`n"; };
if( (ssMsgYesNo "【年間帳の登録OK?】" "[$zfl]`n`n$zcc" )-ne "Yes" ){ return;};
SC $zfl $zcc; ssFileSet2 $zfl;
return;}
};};
##★月日スケジュールファイル(生成→表示)
if( $szSchSts-eq 20 ){ ssSchAct !DSCH $szSchYear; $global:szSchSts=21; };
##★HELP処理
function global:ssSchHelp(){ $bb=Cat $fladdSch -Raw; $zcc=$bb.substring( $bb.indexof("`n<"+"##[" ) ); MsgBox $zcc "1120,740";};
<##[Sch帳の利用説明]##
★[Sch帳][年間帳]とは
◎[Sch帳]..スケジュール帳/予定帳/日記帳として利用するファイルで、縦列に[月/日(曜日)を羅列し
その下の複数行に夫々の利用目的の文字や文やを記載して利用します。
[月/日(曜日)の生成は[曜日生成]釦で行います。
◎[年間帳]..年間の祭日や特定日/予定日を登録するファイルで、2025~2030年の祭日を登録しています。
当該Sch帳を表示した状態で、年間帳を[Sch帳に反映]釦押下でSch帳に反映されます。
★メニュ
◎[当日(5日間)]..Sch帳の今日から5日間の予定を専用窓に表示(印字等でwinメモ帳表示も可能)
◎[当日のSch表示]..Sch帳の今日の箇所近くから表示(PSHメモ帳)
◎[今月のSch表示]..Sch帳の今月の箇所近くから表示(PSHメモ帳)
◎縦列の[曜日生成].カーソル位置に指定月の曜日を縦列に展開
曜日は「月/年(例 5/2026) 指定」で展開(今年は年を省略可)
◎[年間帳の登録日編集]..年間の休日/祭日/指定日/予定日等を年間登録ファイルに登録編集
[!#]行でコメント行を追加登録可能
◎[年間帳をSch帳へ反映]..年間登録ファイルの[日付]行と[!#]行を->Sch帳の当該各行と入れ替える
なおSch帳の[!#]行中に[;]がある行は入れ替えずそのまま残る
入替の例「年間帳:[02/11 建国記念の日」のとき
Sch帳:[02/11(火)aaaaaa!# 建国XX !##bbbbbbb
VV
Sch帳:[02/11(火)aaaaaa!# 建国記念の日 !##bbbbbbb
[来年:予定のSch帳]....来年ファイルでSch帳を表示
[来年:年間帳の登録日編集]..来年ファイルで同上
[来年:年間帳をSch帳へ反映]..来年ファイルで同上
◎縦列[時間生成](マウス位置)..マウス位置に0800~1800の時間行を展開する(マウス右釦にも登録)
★バックアップ機能(2段BackUp)
①File保存時、PSHメモ帳の[File保存]->[Y]で前回Fileを[bak]フォルダにバックアップします。
②PSHメモ帳起動後の最初のSch帳表示のとき[sch\bak]フォルダに[Sch帳ファイル名_bak[n].txt]でバックアップします。
[n]=Day%5 の 0~4 を付加します。例 2/3:n=3、2/5:n=0、2/6:n=1、2/7:n=2
★補足
◎[設定] $szSchDir:Sch帳フォルダ(初期時"sch")の設定
◎[起動] sys\wPshSchAct101.ps1 [args0 [args1 [args2 [args3]]]]
args0: 1/11: 起動時SCH帳の表示
null/0/1: PSHメモ帳モード指定
10/11: Gui基本窓/PSH基本窓モード指定
args1:Schファイル先頭文字(初期時"wPshSch" 変更例 "zAbcSch")
args2:[予定帳]釦の名前指定
args3:[予定帳]のフォルダ指定(初期時"sch")
##>