На самом деле невозможно манипулировать cmd
самой. Есть, однако, глупые вещи, которые можно сделать. Это простой пример использования batch-file
для создания поддельного приглашения cmd
, но с помощью PowerShell. Он просто использует секунды в качестве демонстрации, а не миллисекунды, но его можно изменить и на миллисекунды. (powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalMilliseconds
) Однако мы ограничены 32-битной точностью, так что имейте это в виду! Однако, очевидно, что есть и обходные пути.
@echo off
:myprompt
set mycmd=
set /p "mycmd=prompt: "
for /f "delims=," %%i in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"') do set start=%%I
if "%mycmd:~-4%" == ".cmd" set "mycmd=call %mycmd%"
if "%mycmd:~-4%" == ".bat" set "mycmd=call %mycmd%"
%mycmd%
for /f "delims=," %%a in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"') do set end=%%a
set /a result=%end%-%start%
echo [%result% secs][%time%]
goto :myprompt
Это не совсем точно с точностью до миллисекунды, но я просто доказываю точку.
Вот пример одного, включая миллисекунды, в обход ограничения точности 32 бита.
@echo off
:myprompt
set mycmd=
set /p "mycmd=prompt: "
for /f "delims=," %%i in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"') do set start=%%i
for /f "delims=," %%i in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalMilliSeconds"') do set mstart=%%I
if "%mycmd:~-4%" == ".cmd" set "mycmd=call %mycmd%"
if "%mycmd:~-4%" == ".bat" set "mycmd=call %mycmd%"
%mycmd%
for /f "delims=," %%a in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"') do set end=%%a
for /f "delims=," %%a in ('powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalMilliSeconds"') do set mend=%%a
set /a sres=%end%-%start%
set /a mres=%mend:~-5%-%mstart:~-5%%
echo [%sres%s%mres%][%time%]
goto :myprompt
Заключительное примечание! Это сделано исключительно для демонстрации и ни в коем случае не должно быть точным решением. Если у меня есть время, я могу взять сценарий и улучшить его и использовать меньше циклов for
.
Настоящим недостатком здесь является то, что вам нужно запускать пакетный файл каждый раз, чтобы использовать его по запросу, вместо cmd
самого.