先日『【Python】スクリプトから簡易編集モードを無効にする』という記事を書きました。
この記事の処理を書こうと思った動機として、 batファイルで簡易編集モードをOFFにしようと思ったがやり方が分からなかった、 ということがあります。
ですが今日バッチファイルからでも簡易編集モードをOFFにするやり方を見つけました。
@echo off
setlocal
set /A STD_OUTPUT_HANDLE=-10
PowerShell ^
$GetStdHandle = Add-Type 'A' -PassThru -MemberDefinition ' ^
[DllImport(\"Kernel32.dll\")] ^
public static extern IntPtr GetStdHandle(int nStdHandle); ^
'; ^
$SetConsoleMode = Add-Type 'B' -PassThru -MemberDefinition ' ^
[DllImport(\"Kernel32.dll\")] ^
public static extern bool SetConsoleMode(IntPtr hWnd, int mode); ^
'; ^
$StdoutHandle = $GetStdHandle::GetStdHandle(%STD_OUTPUT_HANDLE%); ^
$mode= 0xFDB7; ^
$null= $SetConsoleMode::SetConsoleMode($StdoutHandle,$mode); ^
%End PowerShell%
set /p AAA=簡易編集モードがOFFになっていれば成功
以下のサイトを参考にしました。Detect ANSI-compatible console from Windows batch file?
(STD_OUTPUT_HANDLE=-10や0xFDB7の数字の意味については自分の以前の記事を見てください)
このやり方を書いている日本語サイトが見つからず苦労したので、同じことをやろうとしている人の助けになれば幸いです。