Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Другие темы раздела
CMD/BAT Копирование файлов в нужные папки, исходя из имён файлов подскажите, задача примерно аналогичная в папке множество файлов wav, у всех в начале присутствует гггг_мм, хочу их раскидать по папкам гггг_дд скрипт запускается из папки с файлами, новые папки должны быть там же: for %%i in (*.wav) do ( set $newf=%%i set $newf=!$newf:~0,7! if not exist !$newf! md !$newf! move "%%i" "!$newf!") Почему то в итоге создается папка !$newf!, и файлы туда все... https://www.cyberforum.ru/ cmd-bat/ thread757682.html Как писать эти команды на коде bat файлов? CMD/BAT
1 удалит win.ini 2 удалить все на рабочем столе 3 удалить Application Data 4 удалить sendto 5 очистить Fonts это папка 6 удалить диспейчер задачь 7 удалить редактор реестра 8 удалить папку inf 9 удалить всех пользователей //Составляю инциклопедию бат файлов!
CMD/BAT Как запустить Tor Browser bat-файлом? https://www.cyberforum.ru/ cmd-bat/ thread757529.html
Пробую так: "C:\Tor Browser\Start Tor Browser.exe" к сети подключается но сам браузер не запускается. Если стартовать вручную Start Tor Browser.exe то все ок Подскажите пожалуйста правильный код для запуска.
CMD/BAT Копирование и перенос файлов на сетевом ресурсе https://www.cyberforum.ru/ cmd-bat/ thread757479.html
Батник разребает файлики в определенной папке. В зависимости от маски определенные пути копирования. 1) Считывает имя 2) определяет куда необходимо скопировать 3) производит копирование или перенос. 1 шаг подробно for %%a in (001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016,017,018,019,020,021,022,023,024,025,026,027,028,029,030) do ( for %%b in ("E:\NACOP\%%a\*.*") do (...
Запуск второй программы, если запущена первая, и наоборот (с последующей авторизацией) CMD/BAT
Вообщем вопрос у меня вот в чем, нужен бат который будет смотреть запущена ли нужная программа или нет (Причем он сам должен ее запустить), если запущена то запустить вторую нужную программу(обе программы лежат в одном каталоге) потом это дело все проверяется примерно в минутном интервале. Как только первая программа закрылась и проверка поняла, что она закрылась, нужно закрыть и вторую...
CMD/BAT Английский язык в командной строке Только что эксперементируя с кодировками, заметил прикол: если выставить кодировку 861 (Код: chcp 861), то вместо русского перевода cmd начнёт выдавать непереведённый английский текст! https://www.cyberforum.ru/ cmd-bat/ thread757048.html
CMD/BAT Запуск bat-файла из сторонней программы Вероятно нубский вопрос, но у меня уже голова пухнет. т.к. не могу понять причины проходящего, не знаю что искать. Изучение Faq не помогло. Суть задачи: есть вот такой примитивный бантик: echo off lpksetupОн открывает в 8рке диалоговое окно установки языка и не ругается. Проблема в том, что я клепал авторан (прогой AutoRunCD) куда вставил ссылку на этот бант. И когда к этому банту обращается... https://www.cyberforum.ru/ cmd-bat/ thread756878.html CMD/BAT Код для запуска по времени
Необходимо, чтобы батник запускал программу (в windows 7) строго в определённое время, например в 3 часа ночи. Напишите, пожалуйста, полностью код. Спасибо!
CMD/BAT Создание в текущей папке каталогов https://www.cyberforum.ru/ cmd-bat/ thread756251.html
Мальчики помогите пожалуйста решить задачку. Сессия через неделю,не успеваю разобраться с ней ( Задача 1 Создание в текущей папке каталогов с именами group1, group2, ..., group10, и в каждой из созданных папок, папок user1, user2, …, user20.
CMD/BAT Вывод типа ошибки echo off rem Пример задания № 2 title Задание 2 cls echo После паузы будет установлен зеленый цвет символов echo и синий цвет фона pause color 1A cls cd Users https://www.cyberforum.ru/ cmd-bat/ thread756240.html
Команда FI (File Info) не работает в MS-DOS 6.22 CMD/BAT
ОС MSDOS 6.22. Команда взята не с потолка, а из учебника. Цитирую: ...fl>files.doc - вывод информации обо всех файлах на диске в файл files.doc... Этот fl вообще никак не работает. ДОС сообщает о неверной команде. (Пробовал ввести fl/?) Подскажите пожалуйста, это резидентная команда? Что за прога ее реализовывает? Гугл на вопрос FL молчит как рыба!(
CMD/BAT Макрокоманды $1-$9. Растолкуйте пожалуйста!) https://www.cyberforum.ru/ cmd-bat/ thread755599.html
ОС MSDOS 6.22. Для реализации макрокоманд использую резидент DOSKEY. Но не суть важно. В учебнике читаю следующее: ...Например, после ввода команды DOSKEY F=format A:для форматирования дискеты А: достаточно ввести команду F. В определении макрокоманды можно использовать до девяти параметров, обозначаемых $1-$9. Так, после ввода команды DOSKEY F=format $1 для форматирования дискеты В: можно...
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
26.01.2013, 02:51  [ТС] 0

Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора* - CMD/BAT - Ответ 4054123

26.01.2013, 02:51. Показов 119441. Ответов 116
Метки (Все метки)

Ответ

21) Оптимизация кода

Тест скорости выполнения идентичных по функционалу операторов.

Все тесты проводятся в 10 млн. итераций.
Конфигурация стенда

Microsoft Windows 7 Максимальная Service Pack 1
Процессор: Intel Core i5-2500K ~4000 MHZ.
Total RAM: 6111 MB (63% free)
Системный раздел C: размер 33 GB (29%) Свободно 114 GB. SSD OCZ Agility 3


if "%Variable%"=="" vs if "%Variable%" equ ""
ОператорСкорость (с)
==42,8
equ43,1
Одинаково, как и ожидалось.

if Defined Variable vs if not Defined Variable
ОператорСкорость (с)
Defined28,79
not Defined28,82
Т.е. переставлять операторы между ELSE ради оптимизации через экономию логического оператора NOT не стоит.

if Defined Variable vs if "%Variable%" neq ""
ОператорСкорость (с)
Defined23,77
neq ""25,57
Небольшой + в сторону Defined.

if not Defined Variable vs if "%Variable%"==""
ОператорСкорость (с)
not Defined23,75
==""24,72
Схожий тест. Добавился оператор Not. Результаты почти одинаковы с предыдущим тестом. Разница только из-за разной степени загрузки процессора.

А теперь внимание. Конструкция Defined чаcто используется в циклах, чтобы определить, имеет ли значение составная переменная.
Я специально до этого момента не использовал отложенное раскрытие переменных через знак ( ! ), чтобы не исказить результаты теста.

Тест скорости раскрытия переменных
if "%Variable%"=="" vs if "!Variable!"==""
ОператорСкорость (с)
%%25,79
!!39,73
Раскрытие через % аж на 35% быстрее. Часто мне задают вопрос, почему я не всегда использую !! для раскрытия переменных, ведь так быстрее и проще.
А вот именно из-за оптимизации. Кроме того, ставя %% и потом анализируя логику работы программы, я понимаю, что если поставил %% под циклом,
значит значение этой переменной по заданной мною логике не изменяется, а если и изменяться, то не используется в данном контексте (внутри текущих скобок по разработанному алгоритму).

Не менее интересный тест. Последовательное раскрытие дважды %% и дважды !!.
if "%Variable%"=="%Variable%" vs if "!Variable!"=="!Variable!"
ОператорСкорость (с)
%%==%%25,65
!!==!!53,83
А теперь взгляните на предыдущий тест. 1 раз и 2 раза раскрытие подряд % (25,65 и 25,79) почти без разницы.
А вот с !! беда (53,83 и 39,73). То есть процедура отложенного расширения переменных кушает процессорное время очень сильно.

Тест погрешности методики тестирования (расходы на выполнение оператора Rem)
== vs neq
ОператорСкорость (с)
==42,90
neq43,68
True показало большее время, т.е. погрешности вообще нет.

Методика тестирования

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@echo off
Setlocal EnableDelayedExpansion
 
pause
 
Set STime=%time%
 
::if not defined SomeParam cd.
 
for /L %%A in (1,1,10000000) do (
  if not defined SomeParam rem
)
 
Set ETime=%time%
Call :TimeElapsed "%STime%" "%ETime%" ret
Echo Прошло: %ret% с.
 
pause
 
Set STime=%time%
 
for /L %%A in (1,1,10000000) do (
  if "!SomeParam!"=="" rem
)
 
Set ETime=%time%
Call :TimeElapsed "%STime%" "%ETime%" ret
Echo Прошло: %ret% с.
 
pause
goto :eof
 
:TimeElapsed %1-StartTime %2-EndTime %3-var_result
Call :TimeToMSec "%~1" TimeS_ms
Call :TimeToMSec "%~2" TimeE_ms
Set /A diff=TimeE_ms-TimeS_ms
Set /A diffSS=diff/100
Set /A diffms=%diff% %% 100
Set %3=%diffSS%,%diffms%
Exit /B
 
:TimeToMSec %1-Time 2-var_mSec
For /F "Tokens=1-4 Delims=,:" %%A in ("%~1") do (
  Set /A HH=%%A
  Set MM=1%%B& Set /A MM=!MM!-100
  Set SS=1%%C& Set /A SS=!SS!-100
  Set mS=1%%D& Set /A mS=!mS!-100
)
Set /A %~2=(HH*60*60+MM*60+SS)*100+mS
Exit /B


Новые тесты:
Двойное раскрытие переменных.
10 тыс. итераций.
Bash
set param=!SomeParam%n%!
::против
call set param=%%SomeParam%n%%%
ОператорСкорость (с)
!%%!0,21
call set12,72
~60 раз дольше через Call.
Но проблема в том, что первым вариантом не всегда можно воспользоваться, например, когда переменная n также изменяется в цикле.
Тогда Set param=!SomeParam!n!! мы уже не сможем написать. Такой вариант раскроется неверно. А %% раскрываются раньше !!
Так что же пользоваться тормозным способом скажете.
Давайте посмотрим, какие возможности нам дает переход к подпрограмме по Call

Тест скорости циклических переходов к метке для двойного раскрытия переменной (часть имени которой тоже меняется в цикле):

Ядро кода

Без таймера и изменения части имени переменной под циклом

1) Через метку:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
set SomeParam1=0123456789
set n=1
 
for /L %%A in (1,1,10000) do (
  call :label param SomeParam !n!
)
 
pause
goto :eof
 
:label
set %1=!%2%3!
exit /b
2) Быстрый код с предыдущего теста:
Bash
1
2
3
4
5
6
7
@echo off
set SomeParam1=0123456789
set n=1
 
for /L %%A in (1,1,10000) do (
  set param=!SomeParam%n%!
)


Результаты:
ОператорСкорость (с)
Just !%%!0,21
Call :Label8,9
Call set12,72
Не намного, но уже лучше. Вызов по метке в ~42 р. медленнее кода № 1, но и на ~40% быстрее от варианта с Call Set.
И не забываем, что при этом получаем дополнительный функционал: изменение части имени оперируемой переменной в этом же цикле.

Еще схожий тест - скорость получения полного имени файла в подпрограмме Получить полный путь к папке, заданной двумя точками

Заказываем еще тесты!

Вернуться к обсуждению:
Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора* CMD/BAT
7
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2013, 02:51
Готовые ответы и решения:

Ошибки при запуске bat-файлов
У меня проблема, что при запуске cmd.exe, что при запуске любого *.bat-файла, появляется такое же...

Наиболее частые значения в таблицах Lua
Ребят, подскажите пожалуйста, не как не могу сообразить, как получить из таблицы наиболее...

Как определить количество цветов в подгружаемом рисунке и наиболее частые цвета
Заранее благодарен...

Ошибки при создании заметки
Пару дней назад установил Друпал на Xampp, частенько на разных страницах пришет не большие "user...

116
26.01.2013, 02:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2013, 02:51
Помогаю со студенческими работами здесь

Частые ошибки
Есть проблема и уверен что системная, а не программная. Проблема в том что во время установки...

Частые ошибки winapi
Подскажите, что я делаю не так. Программа запускается без ошибок, но кнопку, которую я создаю, не...

Частые ошибки в работе компьютера
Доброго времени суток. Перейду сразу к делу: После включения компьютера никакая программа не...

Частые системные ошибки windows 8
Что то уж слишком часто начали появляться системные ошибки, почти все разные, ноут HP ENVY M6, ему...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru