Очевидно, далеко не все условия описаны, ибо число может быть знаковым - это раз; во-вторых, можно только догадываться относительно вещественных чисел:
Код:
![Выделить весь код](images/misc/selectcode.png)
<# :
@echo off
for %%i in (powershell.exe) do if not exist "%%~$PATH:i" (
echo:PowerShell has not been found.&exit /b
)
powershell /nop /ex bypass^
"&{[ScriptBlock]::Create((gc '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}"
exit /b
#>
if ($args.Length -ne 1) {
Write-Warning "only one file can be processed at a time."
break
}
([Regex]'[+-]?(?<!\.)\b\d+\b(?!\.\d+)').Matches((gc (cvpa $args[0]))).Count
А теперь нарисуем какой-нибудь абра-кадабра файл:
Код:
![Выделить весь код](images/misc/selectcode.png)
The first string. It contains 10.11, the float number.
The second string contains -13, it's the signed integer number.
The third string contains unsigned integer number - 10000.
PI number is 3,14159265358979 (separated with comma).
And last number is 13.
Результатом работы командного файла выше будет 5. Почему? Все просто, знаки числа ПИ разделены запятой, регулярное выражение будет считать его за два целых числа.