Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
lica
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 48
1

Выполнить действие, если размер папки превышает 10 МБ

31.01.2013, 19:00. Просмотров 2656. Ответов 18
Метки нет (Все метки)

Здравствуйте !!! как в бат сделать такое если папка больше 10mb запуск файла не происходит если меньше происходить запуск файла. Спасибо

Добавлено через 30 минут
и второй вопрос можно ли как нибудь обьявить переменную для слова например copy d:\ira\1 d:\%i%\2 т.е что бы %i% отражалась как ira.

Добавлено через 2 часа 35 минут
и третий вопрос вот copy d:\1\1.txt d:\2\ как записать в отдельный txt файл куда скопировалось в моем случаи d:\2\ спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2013, 19:00
Ответы с готовыми решениями:

Если в файле указана не цифра 5, выполнить действие
Здравствуйте. Поправьте код >nul find /i "5" < "1.txt" && start "" "2.txt" ...

Удаление самых старых файлов, если общий размер превышает Х ГБ
Доброго времени суток. Помогите написать батник, который бы подсчитывал общий...

Выполнить действие, только если %%i не совпадает ни с одним из значений
Приветствую ! Сначала я делаю так @echo off for /r "D:\temp" %%i in (*) do...

Если выполнено несколько условий, выполнить одно действие
Обычно, с тем чем имел дело выглядело так: (Одно условие и целый блок...

Если нет пинга в течении часа до определенного IP то выполнить действие
Доброго времени суток! Помогите пожалуйста написать bat файл. Задача проста -...

18
Badger
91 / 91 / 4
Регистрация: 25.06.2012
Сообщений: 278
31.01.2013, 19:11 2
1. Сейчас нет времени, но где то видел на форуме определения размера файлов, поищите.
2.
Bash
1
2
set i=ira
echo %i% - выведет ira
Вы это имели ввиду?
3.
Bash
1
copy d:\1\1.txt d:\2 >> c:\temp\copy.log
0
lica
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 48
31.01.2013, 19:20  [ТС] 3
3. нет не это там просто пишется Скопировано файлов: 1. а мне надо путь куда скопировалось записать
0
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
31.01.2013, 19:36 4
lica, Получение информации о размере папки

3.
Bash
1
echo d:\2\ > c:\temp\copy.log
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
31.01.2013, 19:50 5
Цитата Сообщение от lica Посмотреть сообщение
Здравствуйте !!! как в бат сделать такое если папка больше 10mb запуск файла не происходит если меньше происходить запуск файла.
грубый счет
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
SetLocal enabledelayedexpansion
 
set pap=C:\2
 
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%pap%" /-C /S ') Do (
    If !flag!==1 Set dirsize=%%c
    If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
    )
set /a dirsize=!dirsize!/(1024*1024)
if %dirsize% GEQ 10 (start "" /wait notepad.exe) else (Echo Папка меньше 10 мб.)
pause
Цитата Сообщение от lica Посмотреть сообщение
copy d:\1\1.txt d:\2\ как записать в отдельный txt файл куда скопировалось
Если Вам необходимо логировать место копирования файла, проще сделать это через echo
Bash
1
2
echo copy d:\1\1.txt d:\2\ >log.log
copy d:\1\1.txt d:\2\
0
lica
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 48
31.01.2013, 20:44  [ТС] 6
Dragokas.sov44
3. не совсем то файл .log создается даже если копирование не произошло а мне надо что бы он создавался только тогда когда произошло копирование.

Добавлено через 5 минут
sov44
не работает код
@echo off
SetLocal enabledelayedexpansion

set pap=C:\2

For /F "skip=4 tokens=1-3" %%a IN ('Dir "%pap%" /-C /S ') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
set /a dirsize=!dirsize!/(1024*1024)
if %dirsize% GEQ 10 (start "" /wait notepad.exe) else (Echo Папка меньше 10 мб.)
pause
Добавлено через 4 минуты
sov44
делала так

SetLocal enabledelayedexpansion

set pap=d:\op\1\

For /F "skip=4 tokens=1-3" %%a IN ('Dir "%pap%" /-C /S ') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
set /a dirsize=!dirsize!/(1024*1024)
if %dirsize% GEQ 10 (start "d:\1.jpg" /wait notepad.exe) else (Echo Папка меньше 10 мб.)
pause
и так
SetLocal enabledelayedexpansion

set pap=d:\op\1\

For /F "skip=4 tokens=1-3" %%a IN ('Dir "%pap%" /-C /S ') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
set /a dirsize=!dirsize!/(1024*1024)
if %dirsize% GEQ 10 (start "d:\1.jpg") else (Echo Папка меньше 10 мб.)
pause
не работает может я где то ошиблась?
0
Eva Rosalene
Ladybug
4052 / 1591 / 303
Регистрация: 06.01.2013
Сообщений: 4,188
Завершенные тесты: 2
31.01.2013, 21:07 7
3. не совсем то файл .log создается даже если копирование не произошло а мне надо что бы он создавался только тогда когда произошло копирование.
Bash
1
copy d:\1\1.txt d:\2\&&echo copy d:\1\1.txt d:\2>log.txt
2
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
31.01.2013, 21:07 8
И что пишет?
Bash
1
Echo %dirsize%
что там?

Да, и так неверно, нужно
Bash
1
start "" "d:\1.jpg"
0
lica
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 48
31.01.2013, 21:30  [ТС] 9
Dragokas
я только учусь
мне вот все понятно всякие copy dir-ы но не понимаю вот такие команды


Echo,For,tokens.tokens.If !flag.Dir "%pap%" /-C /S '.
SetLocal enabledelayedexpansion и т.п если бы кто нибуть дал с сылочку на все. справку хоть желательно с примерами я бы не задавала эти глупые вопросы и темы я не глупая
0
Eva Rosalene
Ladybug
4052 / 1591 / 303
Регистрация: 06.01.2013
Сообщений: 4,188
Завершенные тесты: 2
31.01.2013, 21:35 10
К сожалению, на все ссылки нет ((
Могу только порекомендовать
Bash
1
2
3
4
Set /?
 Setlocal /?
 If /?
 For /?
1
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
31.01.2013, 22:13 11
Дак вы спрашивайте - поможем.
Сначала попробуйте совет FraidZZ. Потом попробуйте ввести сами.
Опробовать любой свой тестовый скрипт с этими командами.
А потом уже сюда - с конкретными примерами + показать какую конкретно ошибку выдает.
1
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
31.01.2013, 22:24 12
lica, про сохранение скрипта в 866 кодировке надеюсь не забыли?
0
lica
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 48
31.01.2013, 22:45  [ТС] 13
FraidZZ

Добавлено через 2 минуты
sov44
про 46 статью надеюсь не забыли про пункт 1 и про пункт 2
вот тоже самое вы мне говорите что и я вам
я не понимаю
вот это
chcp 1251

Добавлено через 4 минуты
Dragokas
спасибо буду пробовать но сейчас спать у нас в нефтеюганске уже поздно спасибо еще раз
спасибо всем до завтра
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
31.01.2013, 23:24 14
Цитата Сообщение от sov44 Посмотреть сообщение
сохранение скрипта в 866 кодировке
на примере AkelPad
0
Миниатюры
Выполнить действие, если размер папки превышает 10 МБ  
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
01.02.2013, 02:22 15
Цитата Сообщение от lica Посмотреть сообщение
спасибо буду пробовать
А это (,tokens...) наверно так сразу и не получится.
По моему опыту обучения ясно, что не все так сразу очевидно для новичка, допускается множество ошибок.
Так, что только конкретные примеры и индивидуальные уроки, если желаете, лисичка Ира
0
Eva Rosalene
Ladybug
4052 / 1591 / 303
Регистрация: 06.01.2013
Сообщений: 4,188
Завершенные тесты: 2
02.02.2013, 16:24 16
Цитата Сообщение от lica Посмотреть сообщение
я не понимаю
вот это
chcp 1251
Смена кодировки файла на 1251. Позволяеть сохранять файл обычным способом, без смены кодировки.

Добавлено через 22 часа 36 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
По моему опыту обучения ясно, что не все так сразу очевидно для новичка, допускается множество ошибок.
К сожалению, но всё же попробую вкратце объяснить...

Через FOR задаётся список команд для КАЖДОГО элемента набора. Набор пишется внутри IN (...)
Командная строка выполняет эти команды раз за разом, при этом текущий элемент набора находится в переменной, заданной после %%

Например,
Bash
1
FOR %%a IN (C:\Users\*.txt) DO (echo %%a)
выведет имена всех файлов *.txt в папке C:\Users.

Параметр /F используется для построчного разбора файла, т.е.
Bash
1
FOR /f "usebackq tokens=*" %%a IN ("C:\1.txt") DO (echo %%a)
выведет все строки файла 1.txt
usebackq означает, что можно использовать двоёные кавычки в имени файла, это необходимо для работы с файлом, путь к которому содержит пробелы.
tokens=* означает, что в переменную %%a будет записана вся строка

Параметр /L означает математическое перечисление чисел от первого числа, заданного в IN (...) до третьего, с шагом, равным второму.
Bash
1
FOR /L %%a IN (1,1,10) DO (echo %%a)
выведет все числа от 1 до 10
0
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
02.02.2013, 23:49 17
FraidZZ, браво, как для новичка объяснили - супер.
Общий смысл передан верный, но с точки зрения интерпретатора процесс разбора идет немножко по-другом.
Понимаю, что писали специально для ТС,
поэтому и поправлять Вас не вижу смысла. Только, если желаете.
1
Eva Rosalene
Ladybug
4052 / 1591 / 303
Регистрация: 06.01.2013
Сообщений: 4,188
Завершенные тесты: 2
03.02.2013, 14:01 18
Цитата Сообщение от Dragokas Посмотреть сообщение
Общий смысл передан верный, но с точки зрения интерпретатора процесс разбора идет немножко по-другом
Хм, поясните...
0
Dragokas
Эксперт WindowsАвтор FAQ
17053 / 7109 / 860
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
04.02.2013, 01:24 19
FraidZZ, в процессе написания получилось нечто больше, чем попытка объяснить
http://www.cyberforum.ru/cmd-bat/thread778462.html
и часть в теме: Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора*

На самом деле я просто решил сделать более широко. Надеюсь это кому-то будет полезно.
1
04.02.2013, 01:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 01:24

Если файл 1.txt пустой ТО end. если там что то написано происходит действие
Здравствуйте не подскажите как сделать так Если файл 1.txt пустой ТО end. если...

Возможно ли выполнить определённое действие с каждым заданным файлом в текущей папке?
Возможно ли выполнить действие к файлам в текущей папке через консоль Windows?...

Автоматически удалять в каталоге, указанном в командной строке, все подкаталоги, размер которых превышает 20 Мбайт
Написать пакетный файл, который автоматически удалял бы в каталоге, указанном в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru