tag:crieit.net,2005:https://crieit.net/users/speasmen88/feed speasmen88の投稿 - Crieit Crieitでユーザーspeasmen88による最近の投稿 2023-10-20T20:06:09+09:00 https://crieit.net/users/speasmen88/feed tag:crieit.net,2005:PublicArticle/18622 2023-10-20T20:06:09+09:00 2023-10-20T20:06:09+09:00 https://crieit.net/posts/EOF EOF制御文字を削除する <pre><code>#末尾にEOF制御文字があれば、1行削除する if tail -n 1 ${DATA} | grep -q "^¥Z$"; then sed -i "s/^¥Z$//g" ${DATA} fi </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18409 2023-03-19T17:06:25+09:00 2023-03-19T17:06:25+09:00 https://crieit.net/posts/219f6ded47497fc5dc0f3415074011b8 エクスプローラーのキャッシュを削除 <p>■ExplorerCashDel.vbs</p> <pre><code>Option Explicit Const cmd = "Remove-Item C:\Users\xxxx\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations/*-ms" Dim processName : processName = "エクスプローラーキャッシュ削除処理" PeriodicExecution cmd,processName '========================================================= '機能名 : Sub PeriodicExecution '引数 : pm_cmd PowerShellコマンド ' : pm_processName 処理名 '処理 : PowerShell定期実行用 '========================================================= Sub PeriodicExecution(pm_cmd ,pm_processName) Dim objFS Dim x Dim strName,strPath 'ファイルシステムオブジェクト作成 Set objFS = CreateObject("Scripting.FileSystemObject") 'ファイル名を取得 strName = objFS.GetFileName(strPath) x = Msgbox ( pm_processName & "を実行しますか?" & strName , vbOkCancel , pm_processName ) If x = vbOk then ' WSHオブジェクトの作成 Dim objShell Set objShell = CreateObject("WScript.Shell") ' PowerShellコマンドの実行 objShell.Run "powershell -ExecutionPolicy RemoteSigned -Command " & pm_cmd, 0 Msgbox "完了しました" , , pm_processName End If ' WSHオブジェクトの破棄 Set objShell = Nothing End Sub </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18390 2023-02-20T07:35:41+09:00 2023-02-20T07:35:41+09:00 https://crieit.net/posts/PowerShell-Powershell バッチファイルからPowerShellを呼び出し、Powershellコマンドでリネーム <p><strong>■バッチファイル側</strong><br /> ps_call.bat</p> <pre><code>@echo off echo PowerShell呼び出し中です。 powershell -NoProfile -ExecutionPolicy Unrestricted .\rename.ps1 echo 完了しました pause > nul exit </code></pre> <p><strong>■powershell側</strong><br /> rename.ps1</p> <pre><code>Set-Location C:\XXXXXX Get-ChildItem *.txt| Rename-Item -NewName {$_.Name -replace '^([0-9])月','0$1月'} Get-ChildItem *.txt| Rename-Item -NewName {$_.Name -replace '月([0-9])日','月0$1日'} Get-ChildItem *.txt| Rename-Item -NewName {$_.Name -replace '([0-9][0-9])月([0-9][0-9])日','$1$2'} </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18367 2023-01-16T22:03:54+09:00 2023-01-16T22:03:54+09:00 https://crieit.net/posts/VBS-63c54b3ac05e9 (VBS)テキストに書き込まれたパスに対して処理を一括実行 <p>「★★★ ここに実行したい処理を書き込む★★★」の箇所に一括処理する内容を記載する</p> <pre><code>Option Explicit Dim TargetPass : TargetPass = "C:\xxxx\TargetPass.txt" '//処理対象パスが記載されたテキスト Call AtOnceExc( TargetPass ) '========================================================= '機能名 : Sub AtOnceExc '引数 : pm_targetpass 対象パス '処理 : テキストに書き込まれたパスに対して処理を一括実行 '========================================================= Sub AtOnceExc(pm_targetpass) Dim TitleBox : TitleBox = "ファイル一括実行" '//処理タイトル '--------------------------------------------------------------------------------------- '//1.テキストに対象パスを入力指示 '--------------------------------------------------------------------------------------- '//シェルオブジェクトの作成 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") '//MsgBoxを開く Call objWshShell.Popup ("指定したいパスをテキストに入力してください",,TitleBox,vbYesNo + vbInformation) '--------------------------------------------------------------------------------------- '//2.テキスト入力確認 '--------------------------------------------------------------------------------------- '//テキストを開く objWshShell.Run pm_targetpass '//3秒後に処理を実行 WScript.Sleep 3000 '//MsgBoxを開く Dim Re Re = objWshShell.Popup ( "入力したらOKを押下してください",,TitleBox,vbYesNo + vbInformation ) '--------------------------------------------------------------------------------------- '//3.テキスト入力確認 '--------------------------------------------------------------------------------------- IF Re = vbYes Then '//OKが押下された場合、以下のMSGを出力 Dim ReExc ReExc = objWshShell.Popup ( "入力完了。処理を実行しますか?",,TitleBox,vbYesNo + vbInformation ) '--------------------------------------------------------------------------------------- '//4.処理を実行 '--------------------------------------------------------------------------------------- IF ReExc = vbYes Then '//OKが押下された場合、以下のMSGを出力 Dim objFIleSys : Set objFileSys = Wscript.CreateObject("Scripting.FileSystemObject") Dim objReadStream : Set objReadStream = objFileSys.OpenTextFile(pm_targetpass, 1) Do Until objReadStream.AtEndOfStream = True '//テキストに書き込まれたパスを一行ずつ読み込む Dim strLine : strLine = objReadStream.ReadLine '//---------------★★★ ここに実行したい処理を書き込む★★★--------------------- objWshShell.Run strLine '//------------------------------------------------------------------------------- LOOP End If End IF '//2秒後に処理を実行 WScript.Sleep 2000 Call objWshShell.Popup ( "処理を終了します", 3 ,TitleBox,vbYesNo + vbInformation ) '//初期化 Set objFileSys = Nothing Set objWshShell = Nothing End Sub </code></pre> <p><strong>TargetPass.txt</strong><br /> <a href="https://crieit.now.sh/upload_images/747308dfc8efec86a50f6ef477dcd61d63c54b0a02f96.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/747308dfc8efec86a50f6ef477dcd61d63c54b0a02f96.jpg?mw=700" alt="image" /></a></p> speasmen88 tag:crieit.net,2005:PublicArticle/18366 2023-01-16T21:56:26+09:00 2023-01-16T21:56:26+09:00 https://crieit.net/posts/VBS-63c5497a94390 (VBS)対象パスに記載されたテキストを置換 <pre><code>Option Explicit Dim targetPath : targetPath = "C:\xxxx\sample.txt" Dim bkPath : bkPath = "C:\xxxx\sample_bk.txt" '//ファイルの文字コードを指定 const strCode = "Shift-Jis" '//文字コード指定 "Shift-Jis" "UTF-8" call ReplaceCtoTab(targetPath,"^\r\n","") '========================================================= '機能名 : Sub ReplaceCtoTab '引数 : pm_targetPath 処理対象のパス ' : pm_pattern パターン ' : pm_aftStr 置換後の文字列 '処理 : 対象パスに記載されたテキストを置換 '========================================================= Sub ReplaceCtoTab( pm_targetPath ,pm_pattern ,pm_aftStr) '--------------------------------------------------------------------------------------- '//文字列の置換 '--------------------------------------------------------------------------------------- Dim regEx : Set regEx = New RegExp '//RegExpオブジェクト With regEx .Pattern = pm_pattern '//パターン .IgnoreCase = True '//大文字小文字を区別しない .Global = True '//全体を検索 .MultiLine = True End With '--------------------------------------------------------------------------------------- '//読み込みファイルの指定 (相対パスなのでこのスクリプトと同じフォルダに置いておくこと) '--------------------------------------------------------------------------------------- Dim input Set input = CreateObject("ADODB.Stream") input.Type = 2 '//1:バイナリ・2:テキスト input.Charset = strCode '//文字コード指定 input.Open '//Stream オブジェクトを開く input.LoadFromFile pm_targetPath '//ファイルを読み込む '--------------------------------------------------------------------------------------- '//書き出しファイルの指定 (今回は新規作成する) '--------------------------------------------------------------------------------------- Dim output: Set output = CreateObject("ADODB.Stream") output.Type = 2 output.Charset = strCode output.Open '--------------------------------------------------------------------------------------- '//文字列処理 '--------------------------------------------------------------------------------------- Dim StrText StrText = input.ReadText(-1) '//-1:全行読み込み・-2:一行読み込み StrText = regEx.Replace(StrText,pm_aftStr) output.WriteText StrText, 0 '//0:文字列のみ書き込み・1:文字列 + 改行を書き込み '--------------------------------------------------------------------------------------- '//Stream を閉じる '--------------------------------------------------------------------------------------- input.Close '--------------------------------------------------------------------------------------- '//書き出しファイルの保存 '--------------------------------------------------------------------------------------- output.SaveToFile pm_targetPath, 2 '//1:指定ファイルがなければ新規作成・2:ファイルがある場合は上書き output.Close '--------------------------------------------------------------------------------------- '//ログファイルを開く '--------------------------------------------------------------------------------------- Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") '//シェルオブジェクトの作成 objWshShell.Run pm_targetPath '//シェルの実行 End Sub </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18365 2023-01-16T21:53:12+09:00 2023-01-16T21:53:12+09:00 https://crieit.net/posts/VBS (VBS)テキストに任意の文字を書き込む <pre><code>Dim text : text = "aaaa" '//文字 Dim pass : pass = "C:\xxxx\sample.txt" '//パス Call AddTextWrite(text,pass) '========================================================= '機能名 : Sub AddTextWrite '引数 : pm_text テキスト ' : pm_pass 対象パス '処理 : テキストに任意の文字を書き込む '========================================================= Sub AddTextWrite ( pm_text , pm_pass ) Dim objShell Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd /c echo " & pm_text & ">> "& pm_pass ,1,false objShell.Run pm_pass End Sub </code></pre> <p>結果<br /> <a href="https://crieit.now.sh/upload_images/39780cd408160e0508708475cb19cdd563c548aa67de6.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/39780cd408160e0508708475cb19cdd563c548aa67de6.jpg?mw=700" alt="image" /></a></p> speasmen88 tag:crieit.net,2005:PublicArticle/18342 2022-12-19T13:31:16+09:00 2022-12-19T13:31:16+09:00 https://crieit.net/posts/Grep Grep結果を指定したファイルにまとめて出力する <pre><code>'========================================================= '機能名 : Function Grep '引数 : pm_regExg Grep結果出力先 ' : pm_InputStrFile 文字列読み取り側ファイル ' : pm_OutputFile 文字列出力先ファイル '処理 : Grep検索条件リストファイルに定義した検索ワードを1行ずつ取得しGrepを実施する ' Grep結果は指定したファイルにまとめて出力する '========================================================= Function Grep (pm_inputText,pm_folder) Dim strLine Dim WshShell: Set WshShell = Wscript.CreateObject("Wscript.Shell") Dim objFIleSys: Set objFileSys = Wscript.CreateObject("Scripting.FileSystemObject") Dim strReadFilePath: strReadFilePath = pm_inputText 'Grep検索条件リストファイル Dim inputPath: inputPath = pm_folder 'Grep対象フォルダ Dim outputFilePath: outputFilePath = pm_output 'Grep結果出力先 Dim charCode: charCode = "99" '文字コードのオプション Dim searchOption: searchOption = "SU" '検索条件のオプション Dim objReadStream: Set objReadStream = objFileSys.OpenTextFile(strReadFilePath, 1) WshShell.CurrentDirectory = "C:\Program Files (x86)\sakura" Do Until objReadStream.AtEndOfStream = True 'Grep検索条件リストの用語を1行ずつ取得し、Grepを実行 strLine = objReadStream.ReadLine WshShell.Run("cmd /c sakura.exe -GREPMODE -GCODE=" & charCode & " -GKEY=" & """" & strLine & """" & " -GFOLDER=" & inputPath & " -GOPT=" & searchOption & " >>" & outputFilePath ) WScript.sleep(1500) LOOP objReadStream.Close Set objFileSys = Nothing msgbox "end" End Function </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18341 2022-12-19T13:23:20+09:00 2022-12-19T13:23:20+09:00 https://crieit.net/posts/c1d391c26b9ce512e85d9960b9f6376d 全テーブルの中から対象データが含まれているテーブルと項目を取得 <pre><code>--//出力表示 SET SERVEROUT ON; DECLARE --//変数定義 type cursor_type is ref cursor; cur_search cursor_type; vCount INTEGER; ERR_CODE NUMBER; ERR_MSG VARCHAR2(255); TYPE objName IS VARRAY(260) OF VARCHAR2(30); --//対象データを指定 tDATE objName := objName('') BEGIN --//テーブルを指定する(全テーブルの中から特定の文字列が含まれるテーブルを指定) FOR vRec (SELECT table_name,column_name FROM user_tab_cols WHERE table_name LIKE '' OR table_name = '') LOOP BEGIN --//指定したテーブルの中から対象データを検索 FOR i IN tDATA.first..tDATA.last LOOP OPEN cur_search FOR 'SELECT COUNT(*) AS cnt FROM ' || vRec.column_name || 'LIKE ''%' || tDATA(i) || '%'''; FETCH cur_search INTO vCount; IF vCount > 0 THEN --//対象データがあった場合、そのテーブルと項目名、件数を出力する DBMS_OUTPUT.PUT_LINE( tDATA(i) || ':' || vRec.table_name || '.' || vRec.column_name || ' ' || vCount || '件あり' ); END IF; CLOSE cur_search; END LOOP; EXCEPTION --//例外処理 WHEN OTHERS THEN ERR_CODE := SQLCODE; ERR_MSG := SUBSTEB(SQLERRM,1,255); DBMS_OUTPUT.PUT_LINE('error:' || ERR_CODE || ' ' || ERR_MSG || ' ' || vRec.table_name || '.' || vRec.column_name ); END; END LOOP; END; / </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18340 2022-12-19T13:14:43+09:00 2022-12-19T13:14:43+09:00 https://crieit.net/posts/START-END コメントアウト挿入(START~END間) <p>コメントアウト開始タグから終了タグまで先頭に文字列を挿入する</p> <p>/*←コメントアウト開始位置</p> <p>--←挿入文字</p> <p>*/←コメントアウト終了位置</p> <pre><code>'========================================================= '機能名 : Function CommentOutRange '引数 : pm_OutStart コメントアウト開始位置 ' : pm_OutEnd コメントアウト終了位置 ' : pm_strOut 挿入文字 '処理 : コメントアウト開始位置~終了位置を指定し、 ' その間に文字を挿入する '========================================================= Function CommentOutRange( pm_OutStart ,pm_OutEnd ,pm_strOut ) '//チェック文字を検索(開始) SearchNext pm_OutStart,4 StartLine = GetSelectLineFrom() '//チェック文字を検索(終了) SearchNext pm_OutStart,4 StartLine = GetSelectLineFrom() '//開始位置と終了位置をMSGで出力 MsgBox pm_OutStart & " " & pm_OutEnd '//開始行に移動 MoveCursor StartLine,1,0 StartLine = StartLine + 1 '//開始行から終了行までコメントアウト For i = StartLine To EndLine '//一行ずつ移動して、文字を挿入 MoveCursor i,1,0 InsText pm_strOut Next End Function </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18339 2022-12-19T11:34:36+09:00 2022-12-19T11:36:29+09:00 https://crieit.net/posts/3882620981c0bcdfd1753a9e0e78464a コード修正のためのコメントアウトマクロ <p>文字列をコメントアウトして、修正箇所を追加する</p> <p>■例</p> <p>B144program</p> <p><修正後><br /> -- 2022-11-18 MOD Start ←コメントSTART行<br /> -- B144program ←修正前をコメントアウト<br /> H144program ←頭文字BをHに修正<br /> -- 2022-11-18 MOD End ←コメントEND行</p> <pre><code>'========================================================= '機能名 : Function AddCommentOut '引数 : pm_SearchStr 検索値 ' : pm_strRepBefore 置換前 ' : pm_strRepAfter 置換後 ' : pm_CmStartStr コメントSTART行 ' : pm_CmEndStr コメントEND行 '処理 : 選択されていれば、START-ENDで囲って置換 ' : 選択されていなければ、そのまま置換 '========================================================= Function AddCommentOut( pm_SearchStr,pm_strRepBefore,pm_strRepAfter,pm_CmStartStr,pm_CmEndStr ) '-------------------------------------- 'コメントアウトSTART行-END行を追加 '-------------------------------------- '//検索文字があれば、コメントアウト If Editor.GetSelectedString() <> "" Then '//1行選択し、クリップボード変数に格納 SelectLine() Copy() ClipBoardStr = GetClipboard() '//コメントアウト文字を挿入 AllCommentOutStr = pm_CmStartStr & StrOut & ClipBoardStr & ClipBoardStr & pm_CmEndStr Instext AllCommentOutStr End If '-------------------------------------- '文字列置換 '-------------------------------------- '//カーソルを上に1行移動 Up2() '//置換対象文字を検索 SearchNext pm_SearchStr,4 '//検索文字があれば、置換 If Editor.GetSelectedString() <> "" Then '//置換対象選択 Up() SearchNext pm_SearchStr, 4 '//置換した文字列を挿入 InsText CStr( Replace( GetSelectedString(CLing(0) ,pm_strRepBefore ,pm_strRepAfter) ) ) End IF End Function </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18338 2022-12-19T11:20:04+09:00 2022-12-19T11:20:04+09:00 https://crieit.net/posts/dee35a51da382ab4b9e8525a41bfe96d 検索文字列を行選択 <p>文字列を検索して行選択<br /> 検索文字列がなければ、先頭行に移動</p> <pre><code>'========================================================= '機能名 : Function SearchStr '引数 : pm_CheckStr 検索値 '処理 : 文字列を検索して選択する '========================================================= Function AddCommentOut_Search( pm_CheckStr ) '//検索対象文字を検索 SearchNext pm_CheckStr, 4 '//検索文字がなければ、Msg出力 If Editor.GetSelectrdString() = "" Then MsgBox "検索対象なし" '//先頭行にカーソルを移動 MoveCursor 1,1,0 End If End Function </code></pre> speasmen88 tag:crieit.net,2005:PublicArticle/18337 2022-12-19T11:13:17+09:00 2022-12-19T11:13:17+09:00 https://crieit.net/posts/96e631c08a74f962c7a35c32252a7fc8 定義情報を共通化 <p>■定義情報を共通化</p> <pre><code>'@@@@[@@@@@@@@@@@ 共通定義 @@@@@@@@@@@@@@@@@@@@@@ Option Explicit Dim SFO,VD Set SFO = CreateObject("Scripting.FileSystemObject") Set VD = SFO.OpenTextFile("定義情報パス") '//変数定義ファイルを読み込み ExecuteGlobal VD.ReadAll '//初期化 Set VD = Nothing Set SFO = Nothing </code></pre> <p>"定義情報パス"には定義した変数を記載。</p> speasmen88 tag:crieit.net,2005:PublicArticle/18336 2022-12-19T11:00:50+09:00 2022-12-19T11:00:50+09:00 https://crieit.net/posts/998429054adc07282d5ea23118128891 取得用コマンド <p>■サクラエディタのマクロ作成時に必要な取得コマンド。</p> <pre><code>'========================================================= '機能名 : Function FileInfoOut '引数 : なし '処理 : ファイル情報を出力 '========================================================= Function FileInfoOut   '//カレント行とカレント桁   Dim CurrY : CurrY = ExpandParameter("$y") Dim CurrX : CurrX = ExpandParameter("$x") Dim StrMsg : StrMsg = "" StrMsg = StrMsg & "ファイルパス=" & GetFileName() & vbCrLf StrMsg = StrMsg & "ファイル拡張子=" & ExtStr & vbCrLf StrMsg = StrMsg & "カレント行=" & CurrY & vbCrLf StrMsg = StrMsg & "カレント桁=" & CurrX & vbCrLf StrMsg = StrMsg & "テキスト選択有無=" & IsTextSelected & vbCrLf StrMsg = StrMsg & "選択開始行=" & GetSelectLineFrom & vbCrLf StrMsg = StrMsg & "選択終了行=" & GetSelectLineTo & vbCrLf StrMsg = StrMsg & "選択文字列=" & GetSelectedString(0) StrMsg = StrMsg & "選択1行文字列取得=" & GetLineStr(CurrY) MsgBox StrMsg End Function </code></pre> <p>■その他参考サイト<br /> ・マクロ専用関数/変数<br /> <a target="_blank" rel="nofollow noopener" href="https://sakura-editor.github.io/help/HLP000268.html">https://sakura-editor.github.io/help/HLP000268.html</a></p> <p>・サクラエディタの使い方や機能がわかる関数(コマンド)全まとめ一覧<br /> <a target="_blank" rel="nofollow noopener" href="https://caymezon.com/sakura-function/">https://caymezon.com/sakura-function/</a></p> speasmen88