eval для разбора JSON.echo %password% | runas0</* :
@echo off
set COMMAND="%~dp0application.exe"
CScript //e:JScript //nologo //t:0 //i "%~f0" <configuration.json
exit /b
*/0;
var conf = eval("(" + WScript.StdIn.ReadAll() + ")");
var WshShell = new ActiveXObject("WScript.Shell");
var Cmd = WshShell.Exec("cmd /q echo off");
var CmdIn = Cmd.StdIn;
var WinTitle = "rnd" + Math.random();
CmdIn.WriteLine("title " + WinTitle);
while (!WshShell.AppActivate(WinTitle)) WScript.Sleep(1);
WshShell.SendKeys("*~");
CmdIn.WriteLine("doskey /exename=runas.exe *=" + conf.Password);
CmdIn.WriteLine("start /b runas /user:"
+ conf.Domain + "\\" + conf.Login
+ " %COMMAND%>con 2>&1 <con"); // RUNAS <CON -- важно!
CmdIn.WriteLine("exit");
Cmd.Stdout.ReadAll(); set a=1
set a=2& echo %a%set a=1
(
set a=2
echo %a%
)set /a M=%NUMBER_OF_PROCESSORS%/2 & echo !M!> 1.txtsetlocal enabledelayedexpansioncmd.exe должен быть запущен с ключом /v или режим отложенного раскрытия переменных по умолчанию должен быть задан в реестре (см. set /?,setlocal /?, cmd /?).call:set /a M=%NUMBER_OF_PROCESSORS%/2 & call echo %%M%%> 1.txtset /a M=%NUMBER_OF_PROCESSORS%/2 & call echo ^%M^%> 1.txtset /a для отложенного раскрытия переменных их можно записывать не как %var% или !var!, а просто var:set /a M = NUMBER_OF_PROCESSORS / 2 start.start, то первый параметр этой команды в кавычках рассматривается как заголовок нового окна, в котором будет запущена вызываемая команда (сработает только для консольной команды вызываемой без ключа /b).start "команда в кавычках"start "" "команда в кавычках"ReadAll подавится и зависнет), то можно как-то так0</* : :
@ echo off
start /b CScript.exe //e:JScript //nologo //t:0 //i "%~fs0"
exit /b
*/ 0;
var WshShell = new ActiveXObject("WScript.Shell");
var text = WshShell.Exec("C:\\check.exe --param 43").StdOut.ReadAll();
WScript.Sleep(3000);
var FileSystemObject = new ActiveXObject("Scripting.FileSystemObject");
var TextFile = FileSystemObject.CreateTextFile("C:\\results\\43.txt", true);
TextFile.Write(text);
TextFile.Close(); Прога распаковывается по всяким темпам а их кидать в исключения не очень умно.
set "TEMP=D:\MyTemp"
set "TMP=D:\MyTemp"
start "" MyApp.execmd /c set "TEMP=D:\MyTemp"&set "TMP=D:\MyTemp"&start "" MyApp.exeset, но какой именно заранее сказать не могу.)start (или использовать с ключом /wait), чтобы дождаться завершения перед удалением каталога. findstr выполнить:rem Перекодировка файла в UTF-16 c BOM(!) в текущую кодировку консольного окна
cmd /a /c type temp.txt >temp2.txt
move /y temp2.txt temp.txtmore temp.txt | findstr /C:"SID" >out.txt 2>error.txtmore <temp.txt | findstr /C:"SID" >out.txt 2>error.txtfind /v "" <temp.txt | findstr /C:"SID" >out.txt 2>error.txtfindstr использовать find:find "SID" <temp.txt >out.txt 2>error.txt