このバッチをベースにしても想定通り動きません。
MAINでtest.batを5回実行した後にレジストリの値を変更しているだけです。
(WinPosiはどこにも呼ばれておらず、システム予約変数とかでもないようなので、ただ足し算しているだけになっています。200以降は動いているとのことですが、おそらくWindows側の仕組みでたまたま自動的にずれて表示されただけと推察します。)
コマンドプロンプトではGUIベースの操作は基本的に無理なので、powershellで以下を実行してください。
デフォルトで500*500のウインドウを100ピクセルずつ右にずらします。
ずらす幅($X)は引数で指定可能。
※sleep時間は調整可能ですが、短くしすぎると誤作動する場合があります。
--------------------------------------------
param(
[int]$X = 100
)
[int]$Y = 100
[int]$BatWidth=500;
[int]$BatHeight=500;
Add-Type -Namespace PInvoke -Name Win32 -MemberDefinition @\u0026quot;
[System.Runtime.InteropServices.DllImport(\u0026quot;kernel32.dll\u0026quot;)]
public static extern System.IntPtr GetConsoleWindow();
[System.Runtime.InteropServices.DllImport(\u0026quot;user32.dll\u0026quot;)]
public static extern bool MoveWindow(
System.IntPtr hWnd,
int X,
int Y,
int nWidth,
int nHeight,
bool bRepaint
);
\u0026quot;@
for ($i=1;$i -lt 6; $i++){
$process = Start-Process cmd.exe \u0026quot;/k C:\\Users\\Administrator.WINADC\\Desktop\\chie\\${i}test\\test.bat\u0026quot; -PassThru
sleep 1
$hWnd = $process.MainWindowHandle
[PInvoke.Win32]::MoveWindow($hWnd, ($i*$X), $Y, $BatWidth, $BatHeight, $true)
}
--------------------------------------------