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