<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://batcmd.0pk.me/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>Форум разработчиков | CMD\BAT | Developers Forum</title>
		<link>https://batcmd.0pk.me/</link>
		<description>Форум разработчиков | CMD\BAT | Developers Forum</description>
		<language>ru-ru</language>
		<lastBuildDate>Sat, 02 Mar 2024 03:39:57 +0300</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>[Услуги] Дизайнерские услуги, верстка, веб-программинг</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=92#p92</link>
			<description>&lt;p&gt;Добрых времени суток!&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;ВОТ решил порадовать новой&lt;br /&gt;подремонитировал финальную доведя ее до совершенного абсолюта&lt;br /&gt;а также презентовал вступление к открытию оной.&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;&lt;br /&gt;в надбавку ко всему сделал 3 важных фикса&lt;br /&gt;БЕЗ КОТОРЫХ МОЖЕТ НАРУШИТЬСЯ СТАБИЛЬНОСТЬ ПРОГИ&lt;br /&gt;И ВООБЩЕ МОЖЕТ НЕ СРАБОТАТЬ ДОБАВКА В ПЛЕЙЛИСТ.&lt;br /&gt;не применуйте ознакомиться.&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;v9.94&amp;#160; финал -&amp;#160; (обновлен)&amp;#160; выпуск последний&lt;br /&gt;инфа подчищена.&lt;br /&gt;&lt;a href=&quot;https://disk.yandex.ru/d/-85rbZ3VTYDZJA&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ссылка&lt;/a&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;&lt;br /&gt;приятного еще раз - просмотра.&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;Всем спасибо!&lt;/p&gt;</description>
			<author>mybb@mybb.ru (losiret22b)</author>
			<pubDate>Sat, 02 Mar 2024 03:39:57 +0300</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=92#p92</guid>
		</item>
		<item>
			<title>Услуги установки счетчиков тепла</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=81#p81</link>
			<description>&lt;p&gt;Услуги установки счетчиков тепла предоставляются по всей Украине.&lt;br /&gt;Мы одни из лучших на рынке и у нас самые низкие цены!&lt;br /&gt;Найдете дешевле, сделаем скидку 10%&lt;br /&gt;&lt;a href=&quot;https://schetchiki-tepla.kiev.ua/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://schetchiki-tepla.kiev.ua/&lt;/a&gt;&lt;br /&gt;Звоните, пишите будем рады с вами сотрудничать&lt;/p&gt;</description>
			<author>mybb@mybb.ru (tenor)</author>
			<pubDate>Wed, 29 Sep 2021 19:09:22 +0300</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=81#p81</guid>
		</item>
		<item>
			<title>Как автоматизировать удаление файлов по расширению</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=78#p78</link>
			<description>&lt;p&gt;dobriy den&#039; evgeny, vopros takoy: kak zaplanirovat&#039; takoe deistvie?&lt;br /&gt;Xotelosbi zaplanirovat po opredelennomu 4islu kajdogo mesyatca.&lt;br /&gt;Ax da, eshe vopros:&lt;br /&gt;kak sdelat tak 4tobi udalenie proisxodilo na neskolkix diskax srazu...&lt;br /&gt;Budu o4en blagodaren za pomosh.&lt;br /&gt;Spasibo.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Rin_Media)</author>
			<pubDate>Tue, 17 Dec 2013 23:11:54 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=78#p78</guid>
		</item>
		<item>
			<title>Автоматическая авторизация в сетевой папке</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=77#p77</link>
			<description>&lt;p&gt;Помогите с решением вопроса, при вводе \\0.0.0.0(сетевой адрес) идет запрос домен\логин и пароль, есть необходимость при помощи vbs организовать автоматическую авторизацию в сетевой папке.&lt;/p&gt;
						&lt;p&gt;Теги: Автоматическая авторизация в сетевой папке&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Mairon)</author>
			<pubDate>Sun, 30 Jun 2013 17:00:23 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=77#p77</guid>
		</item>
		<item>
			<title>нужна помощь</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=74#p74</link>
			<description>&lt;p&gt;О_о&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 27 May 2012 21:33:17 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=74#p74</guid>
		</item>
		<item>
			<title>Определить имя сетевого интерфейса</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=70#p70</link>
			<description>&lt;p&gt;имя домена прописано в системной переменной&lt;br /&gt;ну а ip домена определяется с помощью dns. ping по домену должен определять ip.&lt;br /&gt;и с помощью таблицы маршрутизации route можно определить ip только вот тут сложности.&lt;br /&gt;дальше через wmic определяется ну и соответственно на весь скрипт потребуются админские права.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sat, 22 Oct 2011 19:36:08 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=70#p70</guid>
		</item>
		<item>
			<title>Найти и удалить папку по маске имени</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=67#p67</link>
			<description>&lt;p&gt;Спасибо!&lt;/p&gt;</description>
			<author>mybb@mybb.ru (noobie)</author>
			<pubDate>Wed, 19 Oct 2011 16:07:48 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=67#p67</guid>
		</item>
		<item>
			<title>Вопрос по bat-файлу</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=56#p56</link>
			<description>&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 22.5em&quot;&gt;&lt;pre&gt;@echo off // Отключаем вывод команд
echo Vasya Pupkin // Выводим текст
echo 2/21 // Выводим текст
echo computer 18 // Выводим текст
pause // Пауза
If not exist %1 (Echo File one, not exist&amp;amp;pause&amp;amp;exit) // Если существует файла в переменной %1; если существует, выводим текст File one, если нет - пауза и выход
If not exist %2 (Echo File Two, not exist&amp;amp;pause&amp;amp;exit) // Аналогично
call &amp;quot;1.exe&amp;quot; 1.txt // Вызываем исполняемый файл с параметром 1.txt
Echo %Errorlevel% // Выводим содержимое переменной %ERRORLEVEL%
If &amp;quot;%Errorlevel%&amp;quot;==&amp;quot;0&amp;quot; (Echo Kod vozvrata 0) // Если ERRORLEVEL равен 0 выводим текст Kod vozvrata 0
If &amp;quot;%Errorlevel%&amp;quot;==&amp;quot;1&amp;quot; (Echo Kod vozvrata 1 (some error)) // Аналогично
Pause
Exit&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Mon, 10 Oct 2011 21:28:36 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=56#p56</guid>
		</item>
		<item>
			<title>Удаление файлов &gt; 20 mb</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=51#p51</link>
			<description>&lt;p&gt;можно и одним файлом&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 31.5em&quot;&gt;&lt;pre&gt;@echo off
SetLocal EnableExtensions EnableDelayedExpansion
if %1-==- goto help
set /a max_size=20*1024*1024
for /d %%d in (%1\*.*) do (
call :calc_dir &amp;quot;%%d&amp;quot;
if !sz! gtr %max_size% rd /s /q &amp;quot;%%d&amp;quot;
)
pause
exit /b
:help
echo Параметр вызова - имя каталога. Если есть пробелы, то взять в кавычки
pause
exit /b
:calc_dir
set dir=%1
set sz=0
for /R %dir% %%f in (*.*) do set /a sz+=%%~zf
exit /b&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;А чтобы вызвать батник с параметром, создайте для батника ярлык. Откройте свойства ярлыка и в строке объект добавьте нужный параметр. Или через интерпретатор с параметром&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Wed, 05 Oct 2011 21:24:24 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=51#p51</guid>
		</item>
		<item>
			<title>Правила раздела</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=22#p22</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Просьба при создании темы с вопросом по реализации чего-либо на скриптовом языке:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Обязательно в заголовке отражать суть проблемы. Авторы тем с названиями &amp;quot;помогите&amp;quot;,&lt;br /&gt;&amp;#160; &amp;#160; &amp;quot;как сделать?????&amp;quot; и т.д. будут наказываться, а темы удаляться&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Вопросы аля &amp;quot;Как раскрутить sql-инъекцию?&amp;quot;, &amp;quot;Как воспользоваться XSS?&amp;quot; на нашем&lt;br /&gt;&amp;#160; &amp;#160; форуме не обсуждаются, возможно это временно.&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Не как правило, а как большая просьба. Код помещайте в [CODE] (&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://pix.am/uJ3H.JPG&quot; alt=&quot;http://pix.am/uJ3H.JPG&quot; /&gt;). Когда выкладывают код просто без&amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; пометок, да ещё строк на 200 это ужасно не читаемо.&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Никто, ни модераторы, ни обычные пользователи ничего не обязаны объяснять или показывать\править ошибки в ваших скриптах. Все&amp;#160; &amp;#160; &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; требования будут безжалостно удаляться из раздела.&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Темы в разделе программирования закрываются редко, т.к. любую программу можно сделать более быстрой, код более коротким. Поднятие&amp;#160; &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; старых тем под флагом оптимизации их кода лишь приветствуется.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Mon, 26 Sep 2011 16:21:56 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=22#p22</guid>
		</item>
		<item>
			<title>Набор Администрации</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=21#p21</link>
			<description>&lt;p&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;&lt;em class=&quot;bbuline&quot;&gt;Набор Администрации&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Здравствуйте посетители форума BatCmd&lt;/p&gt;
						&lt;p&gt;Ведется набор постоянного состава форума(администраторов и модераторов).&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Требования:&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Знание скриптого языка пакетных файлов&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Адекватность&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Коммуникабельность&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Активность&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Наличие свободного времени&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;Заявки оставлять в этом посту. Все желающие будут приняты на должность модератора с испытательным сроком.&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Форма заявки:&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Настоящее имя&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Возраст&lt;/p&gt;
						&lt;p&gt;&amp;#160; • ICQ (обязательно прятать в hide)&lt;/strong&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Mon, 26 Sep 2011 15:27:24 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=21#p21</guid>
		</item>
		<item>
			<title>Определяем букву подключенной флешки</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=20#p20</link>
			<description>&lt;p&gt;Недавно, при написании винлока, задумался, а как же узнать букву флешки подключенной к пк?&lt;br /&gt;Испробовал множество способов, но они либо не работали, либо выдавали ошибку &amp;quot;Windows - Диск отсутствует&amp;quot;&lt;/p&gt;
						&lt;p&gt;Проблема решилась с помощью VBS скрипта...&lt;/p&gt;
						&lt;p&gt;Содержимое *.bat файла :&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 13.5em&quot;&gt;&lt;pre&gt;@echo off
@FlashLetter.vbs
@set /P flash=&amp;lt;&amp;quot;./l&amp;quot;
xcopy &amp;quot;readme.txt&amp;quot; %flash%:\ /Y
rem этот блок удаляет за собой файл, который используется для хранения буквы переменной
@del &amp;quot;./l&amp;quot;
exit&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Содержимое FlashLetter.vbs :&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 27em&quot;&gt;&lt;pre&gt;flash = &amp;quot;&amp;quot;
&#039;Set fs = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;) 
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)
Set Drives = FSO.Drives 
For Each Drive In Drives
	if ((Drive.DriveType = 1) and (Drive.DriveLetter &amp;lt;&amp;gt; &amp;quot;A&amp;quot;) and (Drive.DriveLetter &amp;lt;&amp;gt; &amp;quot;B&amp;quot;) and Drive.IsReady) then 
    flash =  Drive.DriveLetter
    exit for
	end if
Next

&#039;e:

Set f1 = fso.CreateTextFile(&amp;quot;l&amp;quot;, True)
f1.WriteLine flash
f1.Close&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Как видите, всё просто&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 22:22:29 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=20#p20</guid>
		</item>
		<item>
			<title>Аспекты в скриптовом языке</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=19#p19</link>
			<description>&lt;p&gt;&lt;strong&gt;Как можно избежать использования goto?&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;Любой хоть сколько-то осмысленный *.bat-файл длиной больше 50 строк является ярким лозунгом в поддержку работы Дейкстры «О вреде оператора goto». Мешанина из переходов вперед и назад действительно является кодом «только для записи». Можно ли что-то предпринять по этому поводу?&lt;/p&gt;
						&lt;p&gt;На самом деле можно. Как правило, большинство меток и переходов используются для организации ветвлений при проверке условий, т.е. банальных if-then-else блоков. В оригинале, bat-язык поддерживал только одну команду в блоке then, что автоматически приводило к идиомам вида:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 15em&quot;&gt;&lt;pre&gt;if condition goto :THEN
rem Команды ветки ‘else’
rem ...
goto IF_END
:THEN
rem Команды ветки ‘then’
rem ...
:IF_END&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Но к счастью, командный интерпретатор cmd.exe современных ОС Windows 2000 и старше поддерживает блоки команд в конструкциях ветвления, что устраняет необходимость применения меток. Блоки команд заключаются в круглые скобки. Выглядит это так (имитируя C/C++ indentation style):&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 13.5em&quot;&gt;&lt;pre&gt;if condition (
    rem Команды ветки ‘then’
    rem ...
) else (
    rem Команды ветки ‘else’
    rem ...
)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Конкретный пример использования:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 31.5em&quot;&gt;&lt;pre&gt;@echo off
 
set BUILDMODE=%1
 
if &amp;quot;%BUILDMODE%&amp;quot; == &amp;quot;&amp;quot; (
    echo FAIL: Аргумент является обязательным ^(--debug, --release^)
    exit /b 1
)
 
rem Удаляем из аргумента все дефисы для упрощения обработки
set BUILDMODE=%BUILDMODE:-=%
 
if &amp;quot;%BUILDMODE%&amp;quot; == &amp;quot;debug&amp;quot; (
    echo INFO: Устанавливаем debug-режим окружения
    set CCFLAGS=/Od /MDd /Z7
) else (
    echo INFO: Устанавливаем release-режим окружения
    set CCFLAGS=/O2 /MD
)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;На мой взгляд, с этим уже вполне можно жить. Но, как всегда, жизнь не так проста, как кажется. Есть одна проблема. Переменные, использующиеся в блоках then и else, раскрываются перед началом выполнения этих блоков, а не в процессе выполнения. В приведенном примере это не вызывает никаких проблем, однако в следующем вызовет:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 16.5em&quot;&gt;&lt;pre&gt;if &amp;quot;%BUILDMODE%&amp;quot; == &amp;quot;debug&amp;quot; (
    echo INFO: Устанавливаем debug-режим окружения
    set OPTFLAGS=/Od
    set CCFLAGS=%OPTFLAGS% /MDd /Z7
) else (
    echo INFO: Устанавливаем release-режим окружения
    set OPTFLAGS=/O2
    set CCFLAGS=%OPTFLAGS% /MD
)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Загвоздка в том, что в обоих блоках подстановка переменной OPTFLAGS произойдет до того, как она будет изменена в процессе выполнения этого блока. Соответственно, в CCFLAGS будет подставлено то значение, которое OPTFLAGS имела на момент начала выполнения данного if-блока.&lt;/p&gt;
						&lt;p&gt;Решается эта проблема путем использования отложенного раскрытия переменных. Переменные, заключенные в !…! вместо %…%, будут раскрыты в их значения только в момент непосредственного использования. Данный режим по умолчанию отключен. Включить его можно либо использованием ключа /V:ON при вызове cmd.exe, либо использованием команды&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;setlocal enabledelayedexpansion&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;в тексте самого bat-файла. Второй способ мне представляется более удобным – не очень здорово требовать от кого-то запуска твоего сценария с определенным параметром.&lt;/p&gt;
						&lt;p&gt;С учетом сказанного предыдущий «неправильный» пример может быть исправлен так:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 22.5em&quot;&gt;&lt;pre&gt;setlocal enabledelayedexpansion
 
rem ...
 
if &amp;quot;%BUILDMODE%&amp;quot; == &amp;quot;debug&amp;quot; (
    echo INFO: Setting up debug mode environment
    set OPTFLAGS=/Od
    set CCFLAGS=!OPTFLAGS! /MDd /Z7
) else (
    echo INFO: Setting up release mode environment
    set OPTFLAGS=/O2
    set CCFLAGS=!OPTFLAGS! /MD
)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Вот теперь это почти полноценный if-then-else блок. Почти, потому что если в одной из команд echo у вас встретится закрывающая круглая скобка, то вам необходимо заэкранировать ее символом ^, иначе синтаксический анализатор путается…&lt;/p&gt;
						&lt;p&gt;Но в любом случае, это гораздо лучше безумного количества меток и переходов.&lt;br /&gt;Как обработать текстовый файл?&lt;/p&gt;
						&lt;p&gt;Иногда в командном файле необходимо получить доступ к содержимому некоторого текстового файла и некоторым образом это содержимое обработать. Например, прочитать файл настроек программы.&lt;/p&gt;
						&lt;p&gt;Для привнесения еще большей конкретики в процесс изучения зададимся целью прочитать файл с настройками следующего содержания:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 18em&quot;&gt;&lt;pre&gt;# Это простой файл с настройками
 
# Режим сборки
buildmode=release
 
# Компилятор
compiler=cl.exe
 
# Архитектура
arch=x86&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Ничего сверхъестественного – простой key=value формат с возможностью вставки Unix-style комментариев. Помочь в чтении и обработке этого файла нам сможет команда for. Ее дополнительные опции позволяют задать и разделители, и символ начала комментария, и кое-что еще. Вот командный файл, который выполняет поставленную задачу:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;@echo off
 
rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл. Если не удалось распарсить настройки -
rem выходим с ненулевым кодом возврата.
call :read_settings %~dp0\settings.txt || exit /b 1
 
rem Прочитанные настройки:
echo Build mode  : %BUILDMODE%
echo Compiler    : %COMPILER%
echo Architecture: %ARCH%
 
rem Выход из сценария. Дальше - только функции.
exit /b 0
 
rem
rem Функция для чтения настроек из файла.
rem Вход:
rem       %1           - Имя файла с настройками
:read_settings
 
set SETTINGSFILE=%1
 
rem Проверка существования файла
if not exist %SETTINGSFILE% (
    echo FAIL: Файл с настройками отсутствует
    exit /b 1
)
 
rem Обработка файла c настройками
rem Здесь:
rem     eol=# указывает на то, что содержимое строки начиная с символа #
rem     и до ее конца может быть пропущено как комментарий.
rem
rem     delims== указывает, что разделителем значений является символ =
rem 
rem     tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый
rem     токен, а в %%j - второй.
rem 
 
for /f &amp;quot;eol=# delims== tokens=1,2&amp;quot; %%i in (%SETTINGSFILE%) do (
    rem В переменной i - ключ
    rem В переменной j - значение
    rem Мы транслируем это в переменные окружения
    set %%i=%%j
)
 
exit /b 0&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Обильные комментарии должны помочь легко разобраться, что к чему. За подробностями, как обычно, отошлю к:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;for /?&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Кстати, возможности команды for не ограничиваются чтением из файла. Возможно также чтение вывода другой команды. Например, так:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 13.5em&quot;&gt;&lt;pre&gt;@echo off
 
for /f &amp;quot;tokens=* usebackq&amp;quot; %%i in (`cmd.exe /c ver`) do (
    set VERSION=%%i
)
 
echo %VERSION%&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Особенно меня умиляет наличие опции “usebackq”, которая делает синтаксис отдаленно похожим на юниксовый. И в стенах царства Билла есть граждане, скучающие по /bin/sh и пытающиеся хоть как-то скрасить существование свое и окружающих. Следующий совет это также косвенно подтверждает.&lt;br /&gt;Что это за упомянутые ранее операторы объединения команд?&lt;/p&gt;
						&lt;p&gt;Это операторы &amp;amp;, &amp;amp;&amp;amp; и ||. Они практически совсем не освещены в документации, но полезны в повседневности. Они позволяют объединять несколько команд в одну, т.е. примерно так:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 7.5em&quot;&gt;&lt;pre&gt;command1 &amp;amp; command2
command1 &amp;amp;&amp;amp; command2
command1 || command2&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Форма этих операторов весьма соответствует их содержанию. В случае, пожалуй, наименее полезного оператора &amp;amp; вторая команда будет просто выполнена после первой, т.е. это равносильно простой записи:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 6em&quot;&gt;&lt;pre&gt;command1
command2&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Оператор &amp;amp;&amp;amp; гарантирует, что вторая команда будет выполнена только, если первая была выполнена успешно, т.е. с нулевым кодом возврата (он же %errorlevel%). Такие конструкции очень популярны shell-сценариях Unix. Например:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;cd sources &amp;amp;&amp;amp; make clean&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Я был приятно удивлен, узнав, что cmd.exe тоже умеет выполнять такие конструкции. Это безопаснее и правильнее, нежели простое последовательное выполнение этих команд, и короче и проще, чем строгая проверка и обработка кодов возврата. Очень удобно при написании на скорую руку. Не менее полезен иногда и оператор ||. Суть его тоже логична – выполнить вторую команду, если первая дала сбой. Часто встречается в таких идиомах:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;cd sources || exit 1&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Если перейти в каталог sources не удастся, то будет произведен выход с кодом ошибки 1. Если же первая команда отработает нормально, то вторая выполнена не будет. Например, такая простейшая защита помогла бы в случае с cd по UNC-адресу, описанному ранее.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 15:28:39 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=19#p19</guid>
		</item>
		<item>
			<title>Памятка по основам пакетных файлов</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=17#p17</link>
			<description>&lt;p&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Памятка по основам пакетных файлов от batcmd.0pk.ru&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Содержание: основные команды CMD, работа с параметрами, переменными, сообщениями&lt;/p&gt;
						&lt;p&gt;Можете повесить на стенку, рядом с монитором :-)&lt;/p&gt;
						&lt;p&gt;Миниатюра: &lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://pix.am/uP9bl.JPG&quot; alt=&quot;http://pix.am/uP9bl.JPG&quot; /&gt;&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://pix.am/uP9b.JPG&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Скачать (Формат А4)&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 14:29:15 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=17#p17</guid>
		</item>
		<item>
			<title>Пауза перед выполнением следующей команды</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=16#p16</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Пауза перед выполнением следующей команды&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Паузу можно создать при помощи любой команды. Например, при помощи ping:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;ping -n 1 -w 100000 192.168.254.254 &amp;gt;nul&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;-n 1 - выполнить один запрос&lt;br /&gt;-w 100000 - ждать ответа 100 секунд (значение указывается в миллисекундах)&lt;br /&gt;192.168.254.254 - IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping&lt;br /&gt;&amp;gt;nul - скрытие результатов выполнения команды&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Важное замечание:&lt;/strong&gt;&lt;/span&gt; Выполнение команды ping может потребовать прав администратора в Win Vista\7\8, надежнее использовать утилиту sleep.exe из Ресурскита&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 12:13:16 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=16#p16</guid>
		</item>
		<item>
			<title>Защита Flash-ки от записи новых файлов</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=15#p15</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Защита Flash-ки от записи новых файлов&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Защита флешки от записи новых файлов осуществляется путем определения свободного пространства на ней, с последующим полным его заполнением, используя утилиту &lt;strong&gt;fsutil&lt;/strong&gt;. Такой метод отлично подходит, например, для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога &lt;strong&gt;AUTORUN.INF&lt;/strong&gt;.&lt;/p&gt;
						&lt;p&gt;Fsutil является служебной программой командной строки. Для использования программы fsutil необходимо войти в систему с помощью учетной записи администратор или члена группы администраторов.&lt;br /&gt;можно вывести Help:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;fsutil /?&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Такой способ, как выяснилось в результате тестирования, имеет 1 минус:&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Создание больших файлов занимает несколько минут времени. А если понадобилось удалить защитный файл, дописать что-то на флешку, а &lt;br /&gt;&amp;#160; &amp;#160; потом снова выставить защиту? Снова теряется время на создание большого файла&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;@echo off
 setlocal enabledelayedexpansion
 set /a sizofile=1024 * 1024 * 1024
 for /l %%K in (1,1,256) do (
 for /f &amp;quot;tokens=3&amp;quot; %%J in (&#039;dir %~d0 /-C&#039;) do (set freespace=%%J)
 if !freespace! EQU 0 goto ready
 if !freespace! GTR !sizofile! (
 call :getime
 fsutil file createnew &amp;quot;%~d0\[ 1024 Mb ] !randtime!&amp;quot; !sizofile!
 ) else (
 for /l %%K in (1,1,5) do (
 for /f &amp;quot;tokens=3&amp;quot; %%J in (&#039;dir %~d0 /-C&#039;) do (set freespace=%%J)
 set /a sizofilemb=!sizofile! / 1024 /1024 / 2
 set /a sizofile=!sizofile! / 2
 if !freespace! GEQ 67108864 (
 if !freespace! GEQ !sizofile! (
 call :getime
 fsutil file createnew &amp;quot;%~d0\[ !sizofilemb! Mb ] !randtime!&amp;quot; !sizofile!
 )
 ) else ( 
 if !freespace! EQU 0 goto ready
 call :getime
 fsutil file createnew &amp;quot;%~d0\[ 1-63 Mb ] !randtime!&amp;quot; !freespace! 
 goto :EOF
 )
 )
 )
 ) 

 :getime
 set randtime=!time:~-10!
 set randtime=!randtime::=!
 set randtime=!randtime:,=!
 exit /b&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Логика работы кода следующая:&lt;/p&gt;
						&lt;p&gt;&amp;#160; • определяется количество свободного пространства на флешке&lt;br /&gt;&amp;#160; • если свободного пространства больше 1Gb — создаем файлы размером 1Gb до тех пор, пока это условие выполняется&lt;br /&gt;&amp;#160; • Когда свободного пространства меньше 1 гигабайта — последовательно пытаемся создать файлы размером 512Mb, 256Mb, 128Mb, 64Mb и&lt;br /&gt;&amp;#160; &amp;#160; последний файл размером от 1 до 63Mb&lt;/p&gt;
						&lt;p&gt;В итоге на флешке создается примерно следующая структура файлов, заполняющая все свободное место (7-значный уникальный код в конце названия каждого файла необходим для избежания ошибки создания файлов с одинаковыми именами):&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;[ 1-63 Mb ] 7344296&lt;br /&gt;[ 64 Mb ] 7343581&lt;br /&gt;[ 256 Mb ] 6050959&lt;br /&gt;[ 512 Mb ] 6043075&lt;br /&gt;[ 1024 Mb ] 2341570&lt;br /&gt;[ 1024 Mb ] 2353157&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;После установки на флешку такой защиты, нельзя ничего с нее удалять (включая и упомянутый bat-файл), иначе защита перестанет действовать. Для снятия защиты от записи новых файлов (например, при необходимости записать что-то на флешку), необходимо удалить один или несколько созданных таким образом файлов минимально необходимого размера, и записать свои данные. Восстановление защиты после этого займет минимальное время.&lt;/p&gt;
						&lt;p&gt;Строго говоря, такой метод нельзя считать полным аналогом аппаратного переключателя «read-only», имеющегося на некоторых видах флешек. Даже если флешка защищена от записи новых файлов описанным методом, вирус имеет возможность создать файл autorun.inf на флешке — но вот записать что-либо в этот файл уже не сможет. &lt;/p&gt;
						&lt;p&gt;Следует также заметить, что вирус имеет возможность поразить потенциально уязвимые файлы, уже содержащиеся на флешке, ввиду остатка свободного места (обусловленного кластерностью) выделенного для хранения файла. Но тенденции развития функционала вирусов позволяют говорить о том, что сегодня вирусы все меньше поражают отдельные файлы, а все больше используют уязвимости операционной системы Windows. &lt;/p&gt;
						&lt;p&gt;Таким образом, считать такой способ защитой от записи можно только в контексте невозможности создания на флешке непустых новых файлов. Что однако, как показывает практика, является серьезной мерой защиты от autorun-вирусов. Как говорилось выше, этот метод отлично подходит для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF, а также для флешек с личным набором необходимого программного обеспечения, подключаемого к чужим компьютерам.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 12:04:33 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=15#p15</guid>
		</item>
		<item>
			<title>Как в bat файле дождаться появления определенного файла</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=13#p13</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Как в bat файле дождаться появления определенного файла&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Иногда необходимо при появлении определенного файла в папке выполнить какое-то действие. Чтобы организовать проверку появления файла в папке можно использовать следующий пакетный файл&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 12em&quot;&gt;&lt;pre&gt;:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
notepad&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Такой пакетный файл будет проверять с интервалом 10 секунд наличие в корне диска С файла 1.txt и когда файл 1.txt появится, будет выполнено действие, указанное после метки go, т.е. в этом примере будет запущен Блокнот.&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;amp;displaylang=en&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Утилита sleep свободно распространяется в составе Resource Kit (скачать)&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Если файл 1.txt большого размера и копируется откуда-то, то может получится так, что пакетный файл проверит его наличие в то время, как файл еще не скопировался или занят другим приложением. В таком случае, попытка выполнить какие-то действия с файлом 1.txt приведет к ошибке. Чтобы этого не произошло пакетный файл можно модифицировать следующим образом&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 15em&quot;&gt;&lt;pre&gt;:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
rename c:\1.txt 1.txt
if not errorlevel 0 goto go
del c:\1.txt&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Когда файл 1.txt скопировался на диск С не полностью, либо занят другим приложением, попытка его переименовать вызовет ошибку и цикл будет повторяться до тех пор, пока файл не скопируется полностью либо не будет освобожден. После того, как команда rename c:\1.txt 1.txt будет выполнена без ошибки (т.е. файл свободен), то с ним можно выполнять любые действия. В последнем примере это его удаление.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:40:35 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=13#p13</guid>
		</item>
		<item>
			<title>Как запретить повторный запуск приложения</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=12#p12</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Как запретить повторный запуск приложения&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Если приложение запускается bat-файлом, то отследить (и запретить) его повторный запуск можно таким образом:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 6em&quot;&gt;&lt;pre&gt;pslist.exe -e &amp;quot;процесс&amp;quot;
if %errorlevel%==1 start &amp;quot;&amp;quot; &amp;quot;программа&amp;quot;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;pslist - бесплатная утилита, которую можно скачать &lt;a href=&quot;http://www.microsoft.com/technet/sysinternals/utilities/pslist.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:22:24 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=12#p12</guid>
		</item>
		<item>
			<title>Создаем каталог в формате DD MM</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=11#p11</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Создаем каталог в формате DD MM&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Если вы каждый день создаете каталог в формате DD MM, то этот процесс можно облегчить&lt;br /&gt;если использовать этот скрипт&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 30em&quot;&gt;&lt;pre&gt;Rem Создаем каталог
 If Not /%1/==// goto GoOn1
 Echo Параметры: DD MM
 Echo Первый параметр - номер дня
 goto Alles

 :GoOn1
 If Not /%2/==// goto GoOn2
 Echo Параметры: DD MM
 Echo Второй параметр - номер месяца
 GoTo Alles

 :GoOn2

 g:
 cd\
 cd otchet\_in
 mkdir %1%2&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:19:11 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=11#p11</guid>
		</item>
		<item>
			<title>Передаём параметры бат-файлу</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=10#p10</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Передаём параметры бат-файлу&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Иногда случается, что надо сотрудницам ежедневно делать одну и туже работу: &lt;br /&gt;подготовить отчет за какой-то отчетный период,создать какой-то каталог и положить в него файлы,&lt;br /&gt;заархивировать и потом куда-то отправить.&lt;br /&gt;Процесс &amp;quot;создать, положить и заархивировать&amp;quot; можно автоматизировать, чем облегчить труд секретаря, бухгалтера или еще кого.&lt;br /&gt;&lt;span style=&quot;font-style: italic&quot;&gt;(&lt;em class=&quot;bbuline&quot;&gt;исправте только названия и пути&lt;/em&gt;)&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;Rem Сбор данных для отправки в Офис
Rem При смене года измените руками d05%1%2a.xls на d06%1%2a.xls,
Rem w05%1%2а.xls на w06%1%2а.xls, B05%1%2A.txt на B06%1%2A.txt,
Rem O05%1%2A.TXT на O06%1%2A.TXT и 2005%1%2 на 2006%1%2 

If Not /%1/==// goto GoOn1
Echo Параметры: ММ ДД
Echo Первый параметр - номер месяца
Pause &amp;gt; Nul
goto end

:GoOn1
If Not /%2/==// goto GoOn2
Echo Параметры: ММ ДД
Echo Второй параметр - номер дня
Pause &amp;gt; Nul
goto end

:GoOn2

G:
cd\
cd G:\Otchet\_Out\_alw
mkdir f634
cd..
cd G:\Otchet\_Out\_alw\f634


Copy M:\Work\OVP\F634*.frm O06%1%2A.TXT
Copy G:\PrBank\MOD\RABM1\Text\B06%1%2A.txt
Copy G:\PrBank\MOD\RABM5\Text\B06%1%2A.txt
Copy G:\PrBank\MOD\RABM9\Text\B06%1%2A.txt
Arj m SPOSAD *.TXT
c:
:end&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:13:10 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=10#p10</guid>
		</item>
		<item>
			<title>Как изменить IP адрес компьютера из пакетного файла</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=9#p9</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Как изменить IP адрес компьютера из пакетного файла&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;IP адрес можно изменить при помощи команды &lt;strong&gt;netsh&lt;/strong&gt;.&lt;br /&gt;Чтобы правильно сменить IP адрес, сначала надо выяснить текущую конфигурацию. Сделать это можно в командной строке при помощи команды&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;netsh interface ip show address&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Результат работы этой команды - отображение текущей конфигурации сетевого интерфейса. Нас интересует название интерфейса. Предположим, что он называется FASTNET.&lt;br /&gt;Предположим, что нужно сменить IP адрес на 192.168.1.42, адресация в сети статическая, без использования DHCP, шлюз 192.168.1.1, маска 255.255.255.0 В этом случае, команда, которая должна быть выполнена из пакетного файла будет выглядеть следующим образом:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;netsh interface ip set address name=&amp;quot;FASTNET&amp;quot; static 192.168.1.42 255.255.255.0 192.169.1.1 1&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;После выполнения этой команды у интерфейса FASTNET IP адрес сменится на 192.168.1.42.&lt;br /&gt; Команда netsh предоставляет широкие возможности по управлению сетевыми настройками из командной строки. Для ознакомления с другими ее функциональными возможностями пользуйтесь справкой при помощи &lt;strong&gt;netsh /?&lt;/strong&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:09:30 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=9#p9</guid>
		</item>
		<item>
			<title>Как из bat файла обойти проверку даты</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=8#p8</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Как из bat файла обойти проверку даты&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Некоторое программное обеспечение при запуске проверяет текущую системную дату. Если дата больше, чем заложено разработчиком, то программа не запускается. Например, разработчик считает, что версия программы может отработать месяц, а потом пользователь должен будет установить обновленную версию программы. С одной стороны это забота о пользователе, который будет иметь в своем распоряжении свежую версию программы с устраненными недочетами, по отношению к прошлым версиям. С другой стороны, производитель вынуждает пользователя скачивать новую версию даже если пользователя полностью устраивает та версия программы, которая у него установлена. Данную проблему можно легко решить при помощи следующего пакетного файла, который будет запускать программу, дожидаться ее завершения и возвращать дату на ту, которая была до запуска программы.&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 9em&quot;&gt;&lt;pre&gt;set tempdate=%date:~-10%
date 01-01-04
notepad.exe
date %tempdate%&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;В данном примере текущая системная дата сначала сохраняется в переменной, затем (во второй строке) системная дата устанавливается на 1-е января 2004 года, а потом вызывается программа, которая проверяет системную дату. В данном примере это Блокнот. До тех пор, пока открыт Блокнот, пакетный файл находится в ожидании, не завершаясь и не переводя системную дату обратно. Как только Блокнот будет закрыт, пакетный файл продолжит свое выполнение и установит системную дату на сохраненное в переменной tempdate значение, т.е. на то, которое было до запуска пакетного файла.&lt;br /&gt;Не забывайте, что если путь до файла, которым запускается программа, содержит пробелы, то его (путь) необходимо заключить в кавычки. Если путь содержит кириллицу, то при написании пакетного файла необходимо использовать текстовый редактор, поддерживающий кодировку DOS (например, FAR). В противном случае, при запуске пакетного файла будет выведено сообщение о том, что &amp;quot;указанный файл не является внутренней или внешней коммандой...&amp;quot;.&lt;br /&gt;Если программа проверяет текущую системную дату только при своем запуске и во время работы больше этого не делает, то пакетный файл можно модифицировать, добавив перед именем исполняемого файла программы оператор start, т.е. наш пример будет выглядеть так:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 9em&quot;&gt;&lt;pre&gt;set tempdate=%date:~-10%
date 01-01-04
start notepad.exe
date %tempdate%&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;В этом случае, пакетный файл изменит системную дату, запустит программу и не дожидаясь ее завершения вернет дату на ту, которая была до запуска программы.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:05:58 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=8#p8</guid>
		</item>
		<item>
			<title>Как из пакетного файла сделать экспорт реестра</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=7#p7</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Как из пакетного файла сделать экспорт реестра&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Иногда возникает необходимость сохранить в файл определенный куст (ветку) реестра со всеми параметрами в качестве бэкапа или для других целей. Сделать это из пакетного файла можно при помощи такой команды:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 4.5em&quot;&gt;&lt;pre&gt;regedit.exe -ea C:\environment.reg &amp;quot;HKEY_CURRENT_USER\Environment&amp;quot;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Данная команда при выполнении пакетного файла выгрузит ветку HKEY_CURRENT_USER\Environment в файл C:\environment.reg Когда потребуется восстановить значения параметров в HKEY_CURRENT_USER\Environment, будет достаточно запустить файл environment.reg. Эту команду можно использовать для ежедневного бэкапа настроек программного обеспечения и системы, которые хранятся в реестре.&lt;br /&gt;Не забывайте, что если в пути, по которому должен быть сохранен выходной файл или в имени ветки реестра есть пробел, то их необходимо &lt;strong&gt;заключить в кавычки&lt;/strong&gt;.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 11:01:24 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=7#p7</guid>
		</item>
		<item>
			<title>Правила раздела(Читать обязательно)</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=6#p6</link>
			<description>&lt;p&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Правила раздела &amp;quot;Полезные скрипты&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Скрипт должен быть действительно полезным&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Запрещается публиковать скрипты, которые уже были отмечены в этом разделе&lt;/p&gt;
						&lt;p&gt;&amp;#160; • При публикации скриптов пользоваться тегами code&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Описание скрипта и его функций должно быть локаничным и понятным&lt;/p&gt;
						&lt;p&gt;&amp;#160; • В этом разделе запрещается задавать вопросы, для этого есть специальные разделы&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Все посты созданные рядовыми пользователями будут проходить модерацию, и могут быть удалены без предупреждения&lt;/p&gt;
						&lt;p&gt;&amp;#160; • Представитель администрации имеет право не объяснять причину удаления скрипта&lt;/p&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 10:56:14 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=6#p6</guid>
		</item>
		<item>
			<title>Отключение компьютера по условию</title>
			<link>https://batcmd.0pk.me/viewtopic.php?pid=5#p5</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Отключение компьютера по условию&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Иногда требуется чтобы компьютер был выключен после того как какой-нибудь скрипт/батник выполнил свою задачу.&lt;br /&gt;Для этого надо чтобы скрипт/батник в конце работы скопировал какой-нибудь файл, например, на С: (или куда вам угодно) &lt;br /&gt;Почему не просто установить время отключения фиксировано? Очень просто: в больших организациях Б/Д разрастаются просто &lt;br /&gt;как на дрожжах и поэтому трудно скорректировать время отключения. И еще один момент, можно воспользоваться внутренней &lt;br /&gt;командой shutdown для отключения виндовс, но мной было замечено, что очень часто эта команда не может выключить РС.&lt;br /&gt;Поэтому я воспользовался XP Tweaker. Работает великолепно. &lt;br /&gt;Только надо чтобы при включении компьютера удалялся файл C:\halt.s&lt;br /&gt;Это удобно когда, например, машина &amp;quot;А&amp;quot; забрала еже-ночной/дневной архив с машины &amp;quot;В&amp;quot; и оповестила об этом &lt;br /&gt;удаленный компьютер скопировав туда halt.s (название файла конечно произвольное)&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 13.5em&quot;&gt;&lt;pre&gt;if not exist C:\halt.s GOTO end
C:
cd\
cd &amp;quot;Program Files\XP Tweaker&amp;quot;
XPTweaker.exe /shutdown /force
:end
exit&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (evgeny)</author>
			<pubDate>Sun, 25 Sep 2011 10:38:23 +0400</pubDate>
			<guid>https://batcmd.0pk.me/viewtopic.php?pid=5#p5</guid>
		</item>
	</channel>
</rss>
