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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - требуется найти разницу в размере папки до работы скрипта и после

Ответить
Настройки темы
CMD/BAT - требуется найти разницу в размере папки до работы скрипта и после

Новый участник


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


Конфигурация

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


Здравствуйте! Собственно все написано в теме.
Нашел две программы выводящие размер папки, но не знаю как получить эти данные в виде переменной.

Disk Usage
https://technet.microsoft.com/en-us/.../bb896651.aspx
Код: Выделить весь код
Files:        109
Directories:  13
Size:         204а480а579 bytes
Size on disk: 204а745а120 bytes
Diruse
https://technet.microsoft.com/en-us/...99(WS.10).aspx
Код: Выделить весь код
Size  (b)  Files  Directory
204478577    109  SUB-TOTAL: C:\Z
204478577    109  TOTAL: C:\Z

Отправлено: 05:22, 24-01-2015

 

Ветеран


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

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


Цитата Prog-Man:
Самое интересное, что даже этот скрипт стал закрываться »
Замените в:
Код: Выделить весь код
set sSourceFolder=E:\Песочница\0425
«E:\Песочница\0425» на путь к Вашей папке, сохраните в файл с расширением «.cmd» в кодировке OEM/866, запустите командную строку, исполните в ней данный пакетный файл, сделайте скриншот данного окна командной строки («Alt-PrintScreen»), выложите скриншот сюда.

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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Изображения
Тип файла: png 2.png
(12.5 Kb, 14 просмотров)

Теперь окно закрывается сразу после
Код: Выделить весь код
	echo bla-bla-bla
	echo bla-bla-bla
	echo bla-bla-bla
	rem Здесь заканчивается Ваш код

Отправлено: 09:17, 26-01-2015 | #12


Новый участник


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

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


Похоже эта проблема как-то связана с Internet Explorer

Отправлено: 09:41, 26-01-2015 | #13


Ветеран


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

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


Цитата Prog-Man:
Теперь окно закрывается сразу после
Код: Выделить весь код
echo bla-bla-bla
 echo bla-bla-bla
 echo bla-bla-bla
 rem Здесь заканчивается Ваш код
Изображения Тип файла: png 2.png »
Цитата Prog-Man:
Похоже эта проблема как-то связана с Internet Explorer »
Мне кажется, что эта проблема как-то связана с не только с IE, но и с тем, что Вы делаете не совсем то, что я прошу:
Цитата Iska:
Замените в:
Код: Выделить весь код
set sSourceFolder=E:\Песочница\0425
«E:\Песочница\0425» на путь к Вашей папке, сохраните в файл с расширением «.cmd» в кодировке OEM/866, запустите командную строку, исполните в ней данный пакетный файл, сделайте скриншот данного окна командной строки («Alt-PrintScreen»), выложите скриншот сюда. »
Я ведь просил сначала запустить командную строку, затем исполнить в ней пакетный файл. В какое место кода Вы добавили «pause»?

Отправлено: 06:27, 01-02-2015 | #14


Новый участник


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

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


Изображения
Тип файла: png 1.png
(13.1 Kb, 10 просмотров)

Цитата Iska:
Я ведь просил сначала запустить командную строку, затем исполнить в ней пакетный файл. »
Про командную строку пропустил.

Отправлено: 14:24, 01-02-2015 | #15


Ветеран


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

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


Prog-Man, ну, вот — совсем другое дело. Итак, как мы видим, скрипт-болванка на самом деле работает. Только обязательно переименуйте его из «Start.cmd» в какое-либо иное имя, отличное от имён внутренних команд, таких как start, dir и т.п. (а по-хорошему — отличное и от внешних, поскольку некоторые не утруждают себя в пакетных файлах добавлением расширений для исполняемых файлов; Вы добавляете — на это я обратил внимание).

Теперь наша задача разобраться со вставленным Вами кодом.

jpegtran.exe
Я понимаю, что Вы явно руководствовались этим: How to Automate PNG & JPG Image Optimization in Windows - Station Four Blog кодом, но в реальности нет никакой нужды использовать промежуточные файлы. Убрал.


mp3packer.exe
Нет никакой нужды в принудительном задании числа threads параметром «--workers», поскольку явно сказано:
Цитата:
--workers #

Set the number of threads to use for -z processing. These workers will run in parallel with the rest of the program. 0 is a valid number, and corresponds to synchronous processing. The default is a function of the number of processors/cores the program detects, and will likely change in different versions of the program.
Убрал.

Писать «поверх» и без следов в виде резервного файла приложение не умеет (очевидно, сделано специально). Оставил работу со временной папкой, только теперь туда помещаются (и впоследствии удаляются) резервные копии файлов, а не оптимизированные файлы.


gifsicle.exe
Приложению было бы неплохо научиться предварительно проверять результат своей оптимизации, дабы после таковой не получались файлы большего размера, нежели оригинальные.


pngout.exe
Так и не понял, зачем Вы проделываете двойную оптимизацию над bmp-файлами — сначала как над bmp, затем повторно — как над png. Убрал.


В общем, примерно так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if not defined sSourceFolder (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 2
)

call :GetTemporaryName

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!].
	
	pushd "%sSourceFolder%"
	
	if exist "%USERPROFILE%\Desktop\Util\." (
		PATH %USERPROFILE%\Desktop\Util;%PATH%
		
		md "%TemporaryName%"
		
		rem Инициализация Секундомера
		rem http://forum.oszone.net/post-2275768-8.html
		"timemer.exe" my_backup start
		
		rem Оптимизация JPG
		rem jpegtran http://jpegclub.org/jpegtran/
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "*.jpg" "*.jpeg"`) do "jpegtran.exe" -optimize -progressive -copy none "%%~i" "%%~i"
		
		rem Оптимизация MP3
		rem mp3packer 2.04
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "*.mp3"`) do "mp3packer64.exe" -f -z -u "%%~i" "%TemporaryName%\%%~i"
		2>nul del /f /q "%TemporaryName%\*.mp3"
		
		rem Оптимизация GIF
		rem gifsicle 1.87 9.Dec.2014 http://www.lcdf.org/gifsicle/
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "*.gif"`) do "gifsicle.exe" --batch --optimize=3 "%%~i"
		
		rem Конвертирование BMP в PNG. Оптимизация PNG
		rem PNGOUT http://advsys.net/ken/utils.htm
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "*.bmp" "*.png"`) do "pngout.exe" "%%~i"
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "*.png"`) do >"%TemporaryName%\%%~i" <"%%~i" "defluff.exe"
		copy /y "%TemporaryName%\*.png" "*.png"
		2>nul del /f /q "%TemporaryName%\*.png"
		"DeflOpt.exe" "*.png"
		
		rem Получаем время работы программы
		"timemer.exe" my_backup view
		
		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!].
		
		rd /s /q "%TemporaryName%"
	) else (
		echo Can't find folder [%USERPROFILE%\Desktop\Util].
		exit /b 2
	)
	
	popd
) else (
	echo Can't find source folder [%sSourceFolder%].
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempName=%temp%\temp%random%.tmp

	if exist "%sTempName%" goto :NextName

	set sProcName=%~0

	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================

Не стал делать проверок на существование каждой из утилит.

P.S. Поиски живой «DeflOpt.exe» доставили много незабываемой радости и чистого человеческого счастья .
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:03, 02-02-2015 | #16


Новый участник


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

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


Изображения
Тип файла: png 2.png
(11.4 Kb, 5 просмотров)

При перетаскивание папки на скрипт все так же закрывается, при запуске через командную строку пишет
непредвиденное появление \common

Отправлено: 16:10, 02-02-2015 | #17


Ветеран


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

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


Цитата Prog-Man:
При перетаскивание папки на скрипт все так же закрывается, »
Он и должен закрываться после исполнения. Это нормально.

Цитата Prog-Man:
при запуске через командную строку пишет
непредвиденное появление \common »
Prog-Man, выложенный мною пакетный файл использовался без изменений?

Отправлено: 16:42, 02-02-2015 | #18


Новый участник


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

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


Вложения
Тип файла: 7z Desktop.7z
(796.6 Kb, 4 просмотров)

Цитата Iska:
Он и должен закрываться после исполнения. Это нормально. »
Закрывается моментально

Цитата Iska:
Prog-Man, выложенный мною пакетный файл использовался без изменений? »
Изменений не вносил

Отправлено: 17:13, 02-02-2015 | #19


Ветеран


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

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


Цитата Prog-Man:
Закрывается моментально »
Акцент был на то, что он должен закрываться в принципе.


Цитата Prog-Man:
Изменений не вносил »
Буду думать дальше.

Отправлено: 17:27, 02-02-2015 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - требуется найти разницу в размере папки до работы скрипта и после

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Задать время работы скрипта с 15:00 до 2:00 HFShak AutoIt 1 28-03-2014 16:20
Приостановка работы скрипта до нажатия кнопки в программе Pependos AutoIt 0 01-10-2010 02:52
Разное - После апгрейда с XP до Vista оказались две папки Documents - какой пользоваться kefi Microsoft Windows Vista 1 16-02-2010 13:07
[решено] Требуется описание скрипта проверки подключения к сети Optimus AutoIt 5 03-12-2009 00:28
Требуется настроить выполнение sh скрипта на unix через определеный промежуток времен backgam Программирование в *nix 8 05-05-2009 18:15




 
Переход