<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Уменьшить размер bat-файла]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11920&amp;type=atom" />
	<updated>2016-08-18T16:18:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11920</id>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Уменьшить размер bat-файла]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=106868#p106868" />
			<content type="html"><![CDATA[<p>Здравствуйте, товарищи.</p><p>Имеется батник, довольно плохо читаемый (снабдил кое-как комментариями), поскольку требуется достичь минимального размера файла.</p><div class="codebox"><pre><code>
@echo off
md t//временная папка
setlocal enabledelayedexpansion
set q=tftp -i 192.168.1.1 get //шаблонный кусок tftp-запроса
set c=1
set w=0
%q%get_func t\f&gt;nul//получаем файл по tftp
for /f &quot;tokens=*&quot; %%s in (t\f) do (set/a j+=1&amp;set s!j!=%%s&amp;echo.[!j!]	%%s)//разбиваем на строки, нумеруем их, складываем в переменные вида &quot;s18&quot;, и выводим на экран соответствие номера и содержимого строки
set/p f=Number 
set f=!s%f%!//кладём в переменную строку, номер которой ввёл пользователь
%q%&quot;profile &quot;%f% t\p&gt;nul//получаем файл по tftp
set/p c=Cycles 
set/p w=Wait 
echo WScript.Sleep(%w%)&gt;t\t.js//подготавливаем файл для ожидания заданного количества миллисекунд
:L
cscript t\t.js&gt;nul
%q%get_prof t\%i%.t&gt;nul//получаем файл вида &quot;18.t&quot; по tftp (в цикле), складываем во временную папку
set/a i+=1
set/a p=%i%*100/%c%
echo %p%%%//выводим проценты выполнения
if %c% neq %i% goto L//если не последняя итерация - повторяем
echo.&gt;r.txt
for %%i in (t\*.t) do copy/b r.txt+%%i r.txt&gt;nul //копируем все полученные в цикле файлы в один
rd/s/q t//удаляем временную папку
</code></pre></div><p>Вопроса два:<br />-Где можно ещё сэкономить в размере?<br />-Как более правильно сделать задержку с миллисекундной точностью без сторонних средств (ping пробовал, крайне неточно, rundll32 kernel32 sleep - виснет)</p><p>Пока что максимум что могу придумать - заменить символы \r\n в файле на &amp;, объединив некоторые команды в одну строку.</p>]]></content>
			<author>
				<name><![CDATA[Himmler]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25902</uri>
			</author>
			<updated>2016-08-18T16:18:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=106868#p106868</id>
		</entry>
</feed>
