<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>My notes. Заметки на полях. : wildcard</title><link>http://blogs.technet.com/ru/archive/tags/wildcard/default.aspx</link><description>Tags: wildcard</description><dc:language>ru-RU</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Добавляем расширение всем файлам в папке</title><link>http://blogs.technet.com/ru/archive/2007/01/05/581485.aspx</link><pubDate>Fri, 05 Jan 2007 07:46:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:581485</guid><dc:creator>Vitaliy Titov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/ru/comments/581485.aspx</comments><wfw:commentRss>http://blogs.technet.com/ru/commentrss.aspx?PostID=581485</wfw:commentRss><description>&lt;P&gt;Казалось бы, что может быть проще - запускаем cmd.eхe и пользуемся командой ren (rename).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Попытка 1:&lt;/STRONG&gt;&lt;BR&gt;ren *.* *.*.ext&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Результат:&lt;/STRONG&gt;&lt;BR&gt;filename =&amp;gt; filename..ext&lt;BR&gt;filename.aaa =&amp;gt; filename.aaa.ext&lt;BR&gt;filename.aaa.aaa =&amp;gt; filename.aaa.aaa.ext&lt;/P&gt;
&lt;P&gt;Как видно из примера, файлы не имевшие раширения, получили лишнюю точку.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Попытка 2:&lt;/STRONG&gt;&lt;BR&gt;ren * *.ext&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Результат:&lt;/STRONG&gt;&lt;BR&gt;filename =&amp;gt; filename.ext&lt;BR&gt;filename.aaa =&amp;gt; filename.ext (ошибка - файл уже существует)&lt;BR&gt;filename.aaa.aaa =&amp;gt; filename.aaa.ext&lt;/P&gt;
&lt;P&gt;Снова проблема - для файлов с расширением, новое расширение не добавляется, а заменяется.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Попытка 3:&lt;BR&gt;&lt;/STRONG&gt;ren *? *.*.ext&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Результат:&lt;BR&gt;&lt;/STRONG&gt;см. попытку 1&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Попытка 4:&lt;/STRONG&gt;&lt;BR&gt;ren *? *.ext&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Результат:&lt;/STRONG&gt;&lt;BR&gt;см. попытку 2&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Попытка 5:&lt;/STRONG&gt;&lt;BR&gt;ren *? *?.ext&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Результат:&lt;/STRONG&gt;&lt;BR&gt;filename =&amp;gt; filename.ext&lt;BR&gt;filename.aaa =&amp;gt; filename.ааа.ext&lt;BR&gt;filename.aaa.aaa =&amp;gt; filename.aaa.ааа.ext&lt;/P&gt;
&lt;P&gt;Ура! Работает!&lt;BR&gt;Контрольный выстрел:&lt;BR&gt;.aaa =&amp;gt; .aaa.eхt&lt;/P&gt;
&lt;P&gt;Аналогичная ситуация будет наблюдаться и для команд dir, del, copy, move и т.д. В чем причина столь причудливого поведения утилит командной строки? Утверждается, что корни проблемы уходят в прошлое чуть ли не на 25 лет назад&amp;nbsp;во времена DOSа и его прородителя QDOSа, а кажущаяся текущая непредсказуемость толкования символов * и ? связанна с необходимостью обеспечивать обратную совместимость с некими древними приложениями командной строки.&lt;/P&gt;
&lt;P&gt;Кстати, в проблеме с переименованиями существует еще и потенциальная возможность коллизии при добавлении разрешения (просто замените в нашем примере eхt на aaa) - так что если в вашем приложении нужна железная гарантия успешного переименования - прийдется писать код для выбора правильной последовательности переименований самостоятельно. (Думаю, будет достаточно просто упорядочить файлы по убыванию длины).&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=581485" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/ru/archive/tags/cmd/default.aspx">cmd</category><category domain="http://blogs.technet.com/ru/archive/tags/wildcard/default.aspx">wildcard</category></item></channel></rss>