Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Prog-Man, лучше ни то, ни другое. Арифметика пакетных файлов целочисленна, 32-разрядна (один бит отнесён под знак) и посему крайне ограничена диапазоном от -2,147,483,648 до 2,147,483,647.

Вам под какие цели? Можно, например, использовать mshta и VBScript/JScript внутри, наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0425

if exist "%sSourceFolder%\." (
	for /f "usebackq delims=" %%i in (
		`@"%systemroot%\system32\mshta.exe" "javascript:try {with(new ActiveXObject('Scripting.FileSystemObject')) {GetStandardStream(1).Write(GetFolder('%sSourceFolder:\=\\%').Size)}};catch (e){};close();"`
	) do set sPrevFolderSize=%%i
	
	echo Previously size [!sPrevFolderSize!].
	
	rem Здесь начинается Ваш код
	echo bla-bla-bla
	echo bla-bla-bla
	echo bla-bla-bla
	rem Здесь заканчивается Ваш код
	
	for /f "usebackq delims=" %%i in (
		`@"%systemroot%\system32\mshta.exe" "javascript:try {with(new ActiveXObject('Scripting.FileSystemObject')) {GetStandardStream(1).Write(GetFolder('%sSourceFolder:\=\\%').Size - !sPrevFolderSize!)}};catch (e){};close();"`
	) do set sDifference=%%i
	
	echo Difference after working is [!sDifference!].
) else (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
вообще не задействуя вычисления внутри самого пакетного файла.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:26, 24-01-2015 | #2