<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=14321&amp;type=atom" />
	<updated>2025-01-07T21:41:09Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=14321</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=161877#p161877" />
			<content type="html"><![CDATA[<p>Возможно кому-то пригодится для батника.<br />Скрипт от <span style="color: #FFCC00"><strong>mozers</strong></span> в моём случае открывал лог после каждой строчки лога.</p><p><strong>Вот с правками:</strong><br />1. Несколько строк заметок + автооткрытие файла.<br />2. Переменная с путём до лога и названием лога, с учётом создания *.tmp.<br />3. Файл bat в кодировке OEM866, файл лога в Windows-1251 (что дефолтно для Windows блокнота).</p><p>Автору большущее спасибо за труд и Большого здоровья ;-)</p><div class="codebox"><pre><code>
echo Запись журнала выполнения...
rem Путь и название лога
set logsysopt=%temp%\Log_SD.txt
rem Содержание лога
(
echo 1. Строка №1.
echo 1. Строка №2.
echo 1. Строка №3.
echo Конец.
echo _______
echo.
) &gt;&gt; &quot;%logsysopt%.tmp&quot; 2&gt;&amp;1
@for /f &quot;tokens=*&quot; %%a in (%logsysopt%.tmp) do call :866to1251 %%a
del %logsysopt%.tmp
rem Открытие лога
start &quot;&quot; &quot;%logsysopt%&quot;
goto :logsysopt_end2
:866to1251
chcp 1251 &gt;nul
echo %*&gt;&gt;%logsysopt%
chcp 866 &gt;nul
goto :eof
:logsysopt_end2
</code></pre></div><p>Важно!<br />В логе спецсимволы должны быть заэкранированы знаком ^ так: ^(Тут слово^), иначе *.tmp не создастся и *.txt не откроется</p>]]></content>
			<author>
				<name><![CDATA[biffick]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40335</uri>
			</author>
			<updated>2025-01-07T21:41:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=161877#p161877</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=161876#p161876" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p><strong>Xameleon</strong>, да не за что (чой то зацепила меня эта темка).<br />Сделал 3 наглядных примера с корректным русским выводом лога в кодировках dos866, win1251, uft16le.</p><p>Разрешите еще пару малюсеньких замечаний (не по теме треда) по твоему исходному батнику:<br />1. <span style="color: blue">if exist %LOG_FILE_PATH% del %LOG_FILE_PATH%</span> не нужно, если в начале записи в файл поставить <span style="color: blue">&gt;</span> а не <span style="color: blue">&gt;&gt;</span>.<br />2. Рекомендую во все батники добавлять команду <span style="color: blue">pushd &quot;%~dp0</span>&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><br /><p>Просто очень большое спасибо! Никак с этой проблемой справиться не мог для лога оптимизационного батника. Лог должен создаться и открыться в дефолтном текстовом редакторе системы. А какой редактор - неизвестно, но чаще всего дефолтный Блокнот Win.</p><p>С наступившим новым 2025 годом!</p>]]></content>
			<author>
				<name><![CDATA[biffick]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40335</uri>
			</author>
			<updated>2025-01-07T01:01:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=161876#p161876</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129921#p129921" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>Иногда это действительно нужно, но чаще всего - нет.</p></blockquote></div><p>Вот как раз с этим утверждением я и не могу согласиться, коллега.</p><p>В моём понимании пакетный файл, скрипт должны работать именно с текущим каталогом. Пакетный файл/скрипт лежит в одном, единственном месте и работает везде. Для обращения к каталогу, где содержится сам пакетный файл есть %~dp0, а для скрипта есть аналогичный механизм в виде FSO.GetParentFolderName(WScript.ScriptFullName). Мы не таскаем пакетный файл/скрипт за уши по всем каталогам — мы используем потребный каталог как текущий и указываем полный путь для запуска пакетного файла/скрипта на исполнение.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2018-11-20T17:31:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129921#p129921</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129900#p129900" />
			<content type="html"><![CDATA[<p><strong>alexii</strong><br />Просто надо помнить что скрипт в общем случае запускается не в том каталоге где он находится, а в том, откуда был запущен.<br />Соответственно все заданные в скрипте относительные пути будут отсчитываться от места запуска.<br />Иногда это действительно нужно, но чаще всего - нет. Поэтому надо:<br />- либо отказаться от использования относительных путей,<br />- либо в начале скрипта сменить каталог командой CD /D или PUSHD.<br />Так что &quot;категорически&quot; я бы не стал рекомендовать ничего. И то что пакетный файл будет работать в своем каталоге, никак не ограничивает его использование.</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2018-11-19T10:11:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129900#p129900</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129873#p129873" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>2. Рекомендую во все батники добавлять команду pushd &quot;%~dp0&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><p>Категорически не рекомендую этого делать. Чтобы можно было использовать пакетный файл в любом каталоге, а не только в том каталоге, в котором он расположен <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2018-11-16T16:44:03Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129873#p129873</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129867#p129867" />
			<content type="html"><![CDATA[<p><strong>mozers</strong></p><div class="quotebox"><blockquote><p>1. if exist %LOG_FILE_PATH% del %LOG_FILE_PATH% не нужно, если в начале записи в файл поставить &gt; а не &gt;&gt;.<br />2. Рекомендую во все батники добавлять команду pushd &quot;%~dp0&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><p>Да, я в курсе. Благодарю. ) Первую строчку я оставил, чтоб было удобнее комментить на момент отладки, а вторую конструкцию использую только если подразумевается запуск из сети, а так как скрипт размещается локально, решил убрать.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-11-16T10:58:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129867#p129867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129864#p129864" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, да не за что (чой то зацепила меня эта темка).<br />Сделал 3 наглядных примера с корректным русским выводом лога в кодировках dos866, win1251, uft16le.</p><p>Разрешите еще пару малюсеньких замечаний (не по теме треда) по твоему исходному батнику:<br />1. <span style="color: blue">if exist %LOG_FILE_PATH% del %LOG_FILE_PATH%</span> не нужно, если в начале записи в файл поставить <span style="color: blue">&gt;</span> а не <span style="color: blue">&gt;&gt;</span>.<br />2. Рекомендую во все батники добавлять команду <span style="color: blue">pushd &quot;%~dp0</span>&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2018-11-16T08:36:03Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129864#p129864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129863#p129863" />
			<content type="html"><![CDATA[<p><strong>mozers</strong>, огромное спасибо ! ) То что надо ! Пойду внедрять. Крайне Вам признателен за помощь !</p><p>P.S Вчера пытался добиться результата тем же путём, но не знал про ключ <strong>/u</strong> при запуске <strong>cmd</strong></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-11-16T07:34:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129863#p129863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129840#p129840" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>,<br />еще один &quot;более современный&quot; вариант с выводом лога в уникоде (utf16le). Запускать через _start.cmd</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2018-11-15T20:45:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129840#p129840</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129834#p129834" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>А как Вы предлагаете это сделать ?</p></blockquote></div><p>В просмотрщике ФАРа или утилита <strong>od</strong> (так <strong>od -c</strong> или так <strong>od -a</strong>) из cygwin/git-for-windows. Главное - увидеть ascii коды кириллицы, они узнаваемые.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-11-15T18:43:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129834#p129834</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129833#p129833" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>,<br />вот рабочий пример. Винда русская (7 и 10). А, впрочем, пофиг.<br />WSH выдает все (echo и ошибки) в кодировке dos866 (независимо от кодировки консоли).</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2018-11-15T18:33:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129833#p129833</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129831#p129831" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>,</p><p>результат всё тот же:<br /></p><div class="codebox"><pre><code>
Запуск скрипта
РїСЂРёРІРµС‚
РїСЂРёРІРµС‚
C:\Users\superuser\Desktop\test\debug.js(3, 1) ЋиЁЎЄ  ўлЇ®«ҐЁп Microsoft JScript: ЏаҐ¤Ї®« Ј Ґвбп  «ЁзЁҐ ®ЎкҐЄв 

Завершение скрипта
</code></pre></div><div class="quotebox"><blockquote><p>Еще одна подсказка. Посмотрите, в какой кодировке jscript выдает свои ошибки.</p></blockquote></div><p>А как Вы предлагаете это сделать ? )</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-11-15T17:50:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129831#p129831</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129830#p129830" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p> В Вашем примере ошибки скрипта выдаются на английском, а у меня на русском. У вас англоязычная Windows ?</p></blockquote></div><p>Да. </p><p>Еще один вариант. Сделайте редирект целого блока кода. Так Вы избавитесь от необходимости &quot;редиректить&quot; каждую команду и следить на предмет отсутствия/наличия лог-файла. Вот пример:<br /></p><div class="codebox"><pre><code>
@echo off

set &quot;LOGDIR=%~dp0LOGS&quot;
set &quot;LOGFILE=%LOGDIR%\%~n0.log&quot;

if not exist &quot;%LOGDIR%&quot; mkdir &quot;%LOGDIR%&quot;

&gt;&quot;%LOGFILE%&quot; (
	echo:Запуск скрипта
	cscript //nologo debug.js 2&gt;&amp;1
	echo:Завершение скрипта
)
</code></pre></div><p>Еще одна подсказка. Посмотрите, в какой кодировке jscript выдает свои ошибки.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-11-15T16:30:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129830#p129830</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129828#p129828" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>,<br />так в том то и беда, что даже вставка латиницы ни чем не помогает ! ) При этом я получаю всё ту же лажу с кодировкой ошибок скрипта:<br /></p><div class="codebox"><pre><code>
Script started 
C:\Users\auto08\Desktop\js_debug\test.js(8, 1) ЋиЁЎЄ  ўлЇ®«ҐЁп Microsoft JScript: ЏаҐ¤Ї®« Ј Ґвбп  «ЁзЁҐ ®ЎкҐЄв 

Script finished 
</code></pre></div><p>И я буду только рад отказаться от переключения кодировки, если это возможно.<br />Мне вот другое интересно. В Вашем примере ошибки скрипта выдаются на английском, а у меня на русском. У вас англоязычная Windows ? Я к чему веду - у меня такая проблема на всех русскоязычным машинах, что Win 7, что Win 10.<br />Поэтому и бьюсь об стену этой беды.</p><p><strong>mozers</strong>, живой примерчик скинуть можете ? )</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-11-15T15:44:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129828#p129828</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=129825#p129825" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>,<br />Я бы поступил проще, оставив батник в кодировке dos866. Лог с сообщениями и ошибками (и батника и скрипта) будет вполне читабельным (только тоже в dos866).<br />Единственный момент - вместо WSH.StdOut.WriteLine надо использовать WSH.Echo.<br />Да, ключ //U - убрать.</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2018-11-15T14:27:28Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=129825#p129825</id>
		</entry>
</feed>
