<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=14483</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=14483&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом».]]></description>
		<lastBuildDate>Sun, 13 Jan 2019 07:29:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=131117#p131117</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Оказывается консоль не дружит со спец-символами-буквами.</p></blockquote></div><p>Как бы да, но как бы и нет.<br />Я не вникал в код в этой теме. Но в общем случае можно заметить следующее.</p><p>Во-первых, если в качестве шрифта консоли указан используемый по умолчанию Terninal, то в окне консоли многие символы не будут правильно отображаться по определению, особенно при переключении кодировки (на результат перенаправления в файл это не влияет). У меня, кстати, стоит Courier New:<br /></p><div class="codebox"><pre><code>REGEDIT4
[HKEY_CURRENT_USER\Console]
&quot;FaceName&quot;=&quot;Courier New&quot;
&quot;FontFamily&quot;=dword:00000036
&quot;FontWeight&quot;=dword:00000190
&quot;FontSize&quot;=dword:00110000
</code></pre></div><p>Во-вторых, можно вспомнить про ключ /U у CMD и CSCRIPT (используется в сообщении <a href="http://forum.script-coding.com/viewtopic.php?pid=130966#p130966">2019-01-10 21:38:13</a>).</p><p>В третьих, UTF-8 </p><div class="codebox"><pre><code>chcp 65001</code></pre></div><p>в более новых выпусках CMD свободно работает в командных файлах, в более старых (для Win XP) — с костылями.</p><p>В четвёртых, мне не понятно в чём преимущество вызова ещё одного процесса CMD.EXE (именно так и искажается кодировка):<br /></p><div class="codebox"><pre><code>for /f &quot;tokens=* delims=&quot; %%f in (&#039;dir /b /s &quot;%workdir%\*.cue&quot;&#039;) do</code></pre></div><p>вместо<br /></p><div class="codebox"><pre><code>for /r &quot;%workdir%&quot; %%f in (&quot;*.cue&quot;) do</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sun, 13 Jan 2019 07:29:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=131117#p131117</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130997#p130997</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Удалось решить проблему с кодировками и кириллицей, с помощью <a href="http://forum.script-coding.com/viewtopic.php?id=14484">AutoHotKey</a>. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Оказывается консоль не дружит со спец-символами-буквами.</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Fri, 11 Jan 2019 02:53:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130997#p130997</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130971#p130971</link>
			<description><![CDATA[<p>Не знаю. Не могу сказать.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 18:56:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130971#p130971</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130969#p130969</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Ок, понял, спасибо.</p><p>А что значат в консоли строчки &quot;Системе не удаётся найти указанный путь&quot;, здесь вроде бы не в юникоде дело?</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 18:19:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130969#p130969</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130968#p130968</link>
			<description><![CDATA[<p><strong>Zak</strong>, уберите (или закомментируйте) все строки, содержащие подстроку <strong>chcp</strong> (таких строк всего три).</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 17:53:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130968#p130968</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130967#p130967</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Респект, дублирование побеждено, но кириллица стала отображаться абракадаброй, что в консоли, что в выходном файле. Может быть лучше даже убрать chcp 1251, знак ‘ легче сдетектить глазами? Проблема с юникодными именами папок вроде &quot;Noël Akchoté&quot;, естественно осталась.</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 17:50:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130967#p130967</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130966#p130966</link>
			<description><![CDATA[<p>Давайте посмотрим расшренную версию скрипта:</p><div class="codebox"><pre><code>
0&lt;/*! ::
@echo off

for /f &quot;tokens=2 delims=:&quot; %%c in ( &#039;chcp&#039; ) do set &quot;cp=%%~c&quot;

chcp 1251
call :main %* &gt; &quot;%~dpn0.txt&quot;
chcp %cp%

goto :EOF

:main
setlocal

set &quot;workdir=%~1&quot;
if not defined workdir set &quot;workdir=.&quot;

for /f &quot;tokens=* delims=&quot; %%f in ( &#039;
	dir /b /s &quot;%workdir%\*.cue&quot; ^| cscript //nologo //e:javascript &quot;%~f0&quot;
&#039; ) do for /f &quot;tokens=*&quot; %%n in ( &#039;
	dir /b /s &quot;%%~ff\*.flac&quot; &quot;%%~ff\.ape&quot; ^| find /v /c &quot;&quot;
&#039; ) do if %%~n equ 1 echo:%%~ff

goto :EOF

*/0;

var seen = {};

while ( ! WScript.StdIn.AtEndOfStream ) {
	var dir = WScript.StdIn.ReadLine().replace(/\\[^\\]+$/, &quot;&quot;);
	seen[dir] = 1;
}

for (var p in seen) {
	WScript.StdOut.WriteLine(p);
}
</code></pre></div><p>Алгоритм обработки несколько изменился:<br />1. для заданного каталога или текущего каталога выполняем поиск всех *.cue файлов, <span class="bbu">выделяем имена каталогов и удаляем дубликаты (используется jscript)</span><br />2. для каждого, найденного в п.1 файла в том же каталоге определяем количество *.flac/*.ape файлы<br />3. если значение, найденное в п.2 равно 1, вывести имя каталога</p><p>Возможные улучшения:<br />1. Решена прооблема множества *.cue файлов в одном каталоге<br />2. Возможно решена проблема кириллических символов</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 17:38:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130966#p130966</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130965#p130965</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Да, именно в кодировке проблема, папки с именем такого вида: &quot;Noël Akchoté – Perpetual Joseph&quot;, скрипт не может проверить. Жаль, что в Шиндовс всё так сложно, ждём, может кто-нибудь знает решение этих проблем. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 17:32:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130965#p130965</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130964#p130964</link>
			<description><![CDATA[<div class="quotebox"><cite>Zak пишет:</cite><blockquote><p>&quot;Синтактическая ошибка в имени файла...&quot;, видимо проблема с именами в юникоде</p></blockquote></div><div class="quotebox"><cite>Zak пишет:</cite><blockquote><p>оказывается некоторые папки имеют в названии кириллическую букву &quot;С&quot;</p></blockquote></div><p>Возможно. Возможно, что это проявления одной проблемы. </p><p>Полагаю, что коллеги по форуму подскажут решение это проблемы, например, выставить chcp 1251 непосредственно перед выводом в файл. </p><div class="quotebox"><cite>Zak пишет:</cite><blockquote><p>А когда в папке несколько CUE, то в выходном TXT, имя указывается несколько раз, может это можно подчищать после отработки?</p></blockquote></div><p>Это надо решить на этапе формирования списка. В юниксах есть хорошая команда <strong>uniq</strong>, которая удаляет дубликаты. В случае виндоуз -- надо решать с привлечением допролнительных средств, например jscript.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 17:01:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130964#p130964</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130963#p130963</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Спасибо большое, на первый взгляд всё правильно, работает просто ультра быстро, и такой коротенький код. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> </p><p>Хотя в консоли бывает &quot;Синтактическая ошибка в имени файла...&quot;, видимо проблема с именами в юникоде, но не уверен, надо проверять. А когда в папке несколько CUE, то в выходном TXT, имя указывается несколько раз, может это можно подчищать после отработки?<br /></p><div class="codebox"><pre><code>V:\Jazz\(2001) Dave Douglas - Witness\
V:\Jazz\(2001) Dave Douglas - Witness\
V:\Jazz\(2001) Dave Douglas - Witness\
V:\Jazz\(2001) Dave Douglas - Witness\</code></pre></div><p>Ещё заметил такую забавную проблему, оказывается некоторые папки имеют в названии кириллическую букву &quot;С&quot; вот так (СD 1) и в файле получается (‘D 1&quot;).</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 16:35:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130963#p130963</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130962#p130962</link>
			<description><![CDATA[<div class="quotebox"><cite>Zak пишет:</cite><blockquote><p>Хотя то, что успеваю увидеть, там всё правильно.</p></blockquote></div><p>Откройте консоль в текущем каталоге и запустите скрипт. Ну если Вы убедились, что все работает правильно, вот Вам вариант с файлом -- рядом с батником создается одноименный текстовый файл (при каждом запуске перезаписывается). Отличия от предыдущей версии минимальны.</p><div class="codebox"><pre><code>
@echo off

call :main %* &gt; &quot;%~dpn0.txt&quot;
goto :EOF

:main
setlocal

set &quot;workdir=%~1&quot;
if not defined workdir set &quot;workdir=.&quot;

for /f &quot;tokens=* delims=&quot; %%f in ( &#039;
	dir /b /s &quot;%workdir%\*.cue&quot;
&#039; ) do for /f &quot;tokens=*&quot; %%n in ( &#039;
	dir /b /s &quot;%%~dpf\*.flac&quot; &quot;%%~dpf\.ape&quot; ^| find /v /c &quot;&quot;
&#039; ) do if %%~n equ 1 echo:%%~dpf

goto :EOF
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 16:18:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130962#p130962</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130960#p130960</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />Неправильно выразился, как работает понятно, но после отработки консоль закрывается и что получилось остаётся неизвестно. Хотя то, что успеваю увидеть, там всё правильно.</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 15:54:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130960#p130960</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130957#p130957</link>
			<description><![CDATA[<div class="quotebox"><cite>Zak пишет:</cite><blockquote><p>А как работает этот код?</p></blockquote></div><p>Я же дал описание. Как Вы читатете? </p><p><strong>Zak</strong><br />Нет, в файл не сохраняется, вывод производится только в консоль. Проверьте, убедитесь, что работает правильно.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 15:47:39 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130957#p130957</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130955#p130955</link>
			<description><![CDATA[<p><strong>Rumata</strong><br />А как работает этот код? Он не сохраняет имена папок в файл? После отработки он просто закрывается.</p>]]></description>
			<author><![CDATA[null@example.com (Zak)]]></author>
			<pubDate>Thu, 10 Jan 2019 15:26:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130955#p130955</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Найти все папки с .CUE файл-ом/ами и !одним! FLAC/APE файлом]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=130942#p130942</link>
			<description><![CDATA[<p>Постановка задачи понравилась. Решил размять пальцы. </p><div class="codebox"><pre><code>
@echo off

setlocal

set &quot;workdir=%~1&quot;
if not defined workdir set &quot;workdir=.&quot;

for /f &quot;tokens=* delims=&quot; %%f in ( &#039;
	dir /b /s &quot;%workdir%\*.cue&quot;
&#039; ) do for /f &quot;tokens=*&quot; %%n in ( &#039;
	dir /b /s &quot;%%~dpf\*.flac&quot; &quot;%%~dpf\.ape&quot; ^| find /v /c &quot;&quot;
&#039; ) do if %%~n equ 1 echo:%%~dpf
</code></pre></div><p>Описание:<br />1. для заданного каталога или текущего каталога выполняем поиск всех *.cue файлов<br />2. для каждого, найденного в п.1 файла в том же каталоге определяем количество *.flac/*.ape файлы<br />3. если значение, найденное в п.2 равно 1, вывести имя каталога</p><p>Недостатки:<br />1. не детектируется случай множества *.cue файлов в одном каталоге<br />2. предполагается, что один каталог содержит файлы только одного формата либо *.flac, либо *.ape, но не оба формата одновременно<br />2. алгоритм не тестировался</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 10 Jan 2019 05:54:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=130942#p130942</guid>
		</item>
	</channel>
</rss>
