Son sorunuzun cevabı şöyledir: Evet, PowerShell kodunun yardımıyla. Bu Toplu dosya İstemiş ne:
@echo off
setlocal
set /A STD_OUTPUT_HANDLE=-11
set /A ENABLE_PROCESSED_OUTPUT=1, ENABLE_WRAP_AT_EOL_OUTPUT=2, ENABLE_VIRTUAL_TERMINAL_PROCESSING=4
PowerShell^
$GetStdHandle = Add-Type 'A' -PassThru -MemberDefinition '^
[DllImport(\"Kernel32.dll\")]^
public static extern IntPtr GetStdHandle(int nStdHandle);^
';^
$GetConsoleMode = Add-Type 'B' -PassThru -MemberDefinition '^
[DllImport(\"Kernel32.dll\")]^
public static extern bool GetConsoleMode(IntPtr hWnd, ref UInt32 lpMode);^
';^
$StdoutHandle = $GetStdHandle::GetStdHandle(%STD_OUTPUT_HANDLE%);^
$ConsoleMode = New-Object -TypeName UInt32;^
$null = $GetConsoleMode::GetConsoleMode($StdoutHandle,[ref]$ConsoleMode);^
Set-Content ConsoleMode.txt $ConsoleMode^
%End PowerShell%
set /P "ConsoleMode=" < ConsoleMode.txt
set /A "AnsiCompatible=ConsoleMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING"
if %AnsiCompatible% neq 0 (
echo The console is Ansi-compatible!
) else (
echo Ansi codes not supported...
)
Ben Eklenti Tip cmdlet'inin ve this question kabul cevapta verilen bilgiler PowerShell yardımıyla örneklere okuma kod bu tür yazdı.
Bir Windows API'sini çağırmak için PowerShell'e ihtiyacınız var, ancak PowerShell'i toplu işten arayabilirsiniz. – SomethingDark
@SomethingDark, Windows API'lerini Powershell'den nasıl arayacağınıza dair iyi kaynaklar önerebilir misiniz? – jwfearn
Dürüst olmak gerekirse, bir keresinde bunu yapmak için ihtiyacım vardı, sadece pencereleri taşımak ve yeniden boyutlandırmak için yeterince şanslıydım ve ihtiyacım olanı tam olarak yapan mevcut kodu bulmayı başardım, ama şu gibi bir şey: https://blogs.msdn.microsoft.com/mattbie/2010/02/23/how-to-call-net-and-win32-methods-from-powershell-and-your-troubleshooting-packs/ – SomethingDark