<?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="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5364&amp;type=atom" />
	<updated>2014-11-28T08:24:03Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5364</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88759#p88759" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Никуда ничего «подгружать» и «преобразовывать» не надо. Достаточно просто использовать нормальный редактор с поддержкой кодировки OEM/866.</p></blockquote></div><br /><p>или:</p><br /><div class="codebox"><pre><code>@echo off
setlocal

&gt;nul chcp 1251

set &quot;sFolder=C:\test&quot;
set &quot;sFile=%~dp0Важный файл.txt&quot;

for /f &quot;delims=&quot; %%i in (&#039;&quot;2&gt;nul dir /ad/b &quot;%sFolder%&quot;&quot;&#039;) do (
 for /f &quot;delims=&quot; %%j in (&#039;&quot;2&gt;nul dir /ad/b &quot;%sFolder%\%%i&quot;&quot;&#039;) do (
  &gt;nul copy /y &quot;%sFile%&quot; &quot;%sFolder%\%%i\%%j&quot;
  )
 )

endlocal
exit /b 0</code></pre></div><br /><p>.</p>]]></content>
			<author>
				<name><![CDATA[Yury]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30230</uri>
			</author>
			<updated>2014-11-28T08:24:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88759#p88759</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88757#p88757" />
			<content type="html"><![CDATA[<p>Никуда ничего «подгружать» и «преобразовывать» не надо. Достаточно просто использовать нормальный редактор с поддержкой кодировки OEM/866.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-11-28T07:57:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88757#p88757</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88754#p88754" />
			<content type="html"><![CDATA[<p>Ну раз тут такое пошло , еще один интересный вопрос , предположим что файлик называется не &quot;1.txt&quot;&nbsp; &nbsp;а&nbsp; &quot;Важный файл.txt&quot;<br />Ранее для того что бы .bat корректно работал приходилось подгружать код в Sublime Text 2.0.2 и преобразовывать (Windows 866).<br />Возможно ли совершить данные действия минуя данную прогу?</p>]]></content>
			<author>
				<name><![CDATA[PavelR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32701</uri>
			</author>
			<updated>2014-11-28T06:09:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88754#p88754</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88703#p88703" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Yury пишет:</cite><blockquote><p>…так как первая оперируют фиксированным списком, созданным в начале работы такой конструкции, а вторые оперируют по очереди всеми подходящими элементами набора, зачастую созданными уже в результате работы этой самой конструкции. Много раз мне приходилось это объяснять в ответах на вопросы вроде такого: &quot;Почему пакетный файл переименовывает файлы по второму кругу?&quot;</p></blockquote></div><p>Именно. Особым шиком тут является попадание под маску коротких имён файлов с кириллическими именами <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-11-27T00:12:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88703#p88703</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88702#p88702" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Alecsis пишет:</cite><blockquote><div class="codebox"><pre><code>rem imho, конструкция For /R тут вполне в тему</code></pre></div></blockquote></div><br /><br /><br /><p><strong>1</strong>. Да ну? А Вы не заметили, что файл нужно копировать только в &quot;дальние папки&quot;, а не во все?</p><p>Если уж использовать эту конструкцию для решения данной и других подобных задач, то предложу для обсуждения такой способ:</p><div class="codebox"><pre><code>@echo off
setlocal

set &quot;sFolder=C:\test&quot;
set &quot;sFile=%~dp01.txt&quot;

:: Устанавливаем нужный уровень вложенности обрабатываемых каталогов.
set level=2

:: Получаем регулярное выражение для поиска папок данного уровня вложенности
::  и записываем его во временный файл (иначе у команды &quot;findstr&quot; проявится очередной баг).
set reg_expr=
for /l %%i in (1 1 %level%) do (
 call set reg_expr=%%reg_expr%%[\\][\\]*\\
 )
echo ^^\&quot;%reg_expr:[\\]=[^\\]%\&quot;$&gt;&quot;%~dp0.tmp&quot;

pushd &quot;%sFolder%&quot;
for /r %%i in (.) do (
 rem Убираем финальные точку и слеш, но слеш возвращаем.
 set x=%%~fi\
 rem Из полных имён каталогов убираем часть, являющуюся полным именем корневого каталога,
 rem  и следующий за ней слеш;
 rem  в выводе результата командой &quot;echo&quot; ищем каталоги с заданным уровнем вложенности и,
 rem  если находим, копируем в них файл.
 for /f &quot;delims=&quot; %%j in (&#039;
  call echo &quot;%%x:%cd%\=%%&quot;^| findstr /g:&quot;%~dp0.tmp&quot;
 &#039;) do (
  &gt;nul copy /y &quot;%sFile%&quot; %%j
  )
 )
popd

del &quot;%~dp0.tmp&quot;

endlocal
exit /b 0</code></pre></div><p>.</p><br /><br /><p><strong>2</strong>. Конструкция &quot;<em>for /f</em>&quot; во многих случаях предпочтительнее конструкций &quot;<em>for /r</em>&quot;, &quot;<em>for /d</em>&quot;, &quot;<em>for /d /r</em>&quot; и просто &quot;<em>for</em>&quot;, так как первая оперируют фиксированным списком, созданным в начале работы такой конструкции, а вторые оперируют по очереди всеми подходящими элементами набора, зачастую созданными уже в результате работы этой самой конструкции. Много раз мне приходилось это объяснять в ответах на вопросы вроде такого: &quot;Почему пакетный файл переименовывает файлы по второму кругу?&quot;</p><p>Пример:</p><div class="codebox"><pre><code>@for /l %%i in (1 1 100) do @type nul&gt;&quot;%%i.txt&quot;

@for %%i in (*.txt) do @ren &quot;%%i&quot; &quot;%%~ni_new.txt&quot;</code></pre></div><p>.</p><p>В результате увидите файл, переименованный дважды: &quot;<em>1_new_new.txt</em>&quot;.</p>]]></content>
			<author>
				<name><![CDATA[Yury]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30230</uri>
			</author>
			<updated>2014-11-27T00:03:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88702#p88702</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88683#p88683" />
			<content type="html"><![CDATA[<p>А вот ещё работающий вариант, без dir и вложенных циклов:<br /></p><div class="codebox"><pre><code>
@Echo OFF
SetLocal
Set &quot;FOLDER=D:\Test&quot;      &amp; rem целевая папка
Set &quot;FILE=%~dp0\1.txt&quot;    &amp; rem предполагаем, что копируемый файл в той же папке, что и сам .CMD

rem imho, конструкция For /R тут вполне в тему
rem
Pushd &quot;%FOLDER%&quot;          
For /R %%d In (.) Do Copy /y &quot;%FILE%&quot; &quot;%%d\*&quot;
Popd
EndLocal
Exit /B
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alecsis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31888</uri>
			</author>
			<updated>2014-11-26T08:26:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88683#p88683</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88666#p88666" />
			<content type="html"><![CDATA[<p>Огромное Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[PavelR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32701</uri>
			</author>
			<updated>2014-11-25T11:40:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88666#p88666</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88660#p88660" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>@echo off
setlocal

set &quot;sFolder=C:\test&quot;

for /f &quot;delims=&quot; %%i in (&#039;&quot;2&gt;nul dir /ad/b &quot;%sFolder%&quot;&quot;&#039;) do (
 for /f &quot;delims=&quot; %%j in (&#039;&quot;2&gt;nul dir /ad/b &quot;%sFolder%\%%i&quot;&quot;&#039;) do (
  &gt;nul copy /y &quot;1.txt&quot; &quot;%sFolder%\%%i\%%j&quot;
  )
 )

endlocal
exit /b 0</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Yury]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30230</uri>
			</author>
			<updated>2014-11-25T09:35:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88660#p88660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88659#p88659" />
			<content type="html"><![CDATA[<p>Добрый день!<br />Может сможете помочь. Ситуация похожая. Но с одним &quot;но&quot; , внутри папки test помимо&nbsp; папок с неизвестным именем,&nbsp; в каждой из них есть подпапки порядка 5-6 шт.<br />Как организовать все так , что бы файлик 1.txt помещался во все эти назовем их &quot;дальние папки&quot;</p><p>Приложил картинку как я это вижу ... художник из меня так себе <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />&nbsp; <br /><span class="postimg"><img src="http://i.imgur.com/P69PVPO.png" alt="http://i.imgur.com/P69PVPO.png" /></span></p><p>Вместо Фамилий так же папки с неизвестным именем.</p>]]></content>
			<author>
				<name><![CDATA[PavelR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32701</uri>
			</author>
			<updated>2014-11-25T07:58:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88659#p88659</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=43545#p43545" />
			<content type="html"><![CDATA[<p>Например, так:<br /></p><div class="codebox"><pre><code>@echo off
setlocal

set sFolder=c:\test

for /f &quot;usebackq&quot; %%i in (`dir /b /o:n /a:d &quot;%sFolder%&quot;`) do copy /y &quot;1.txt&quot; &quot;%sFolder%\%%i\&quot;&gt;nul

endlocal
exit /b 0</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-01-11T17:56:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=43545#p43545</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Копирование файла в неизвестную папку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=43538#p43538" />
			<content type="html"><![CDATA[<p>Как можно скопировать файл 1.txt в директорию C:\test в которой есть много папок с неизвестным именем, файл должен копироваться во все эти папки и если такой файл существует заменить.</p>]]></content>
			<author>
				<name><![CDATA[Skrask]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26558</uri>
			</author>
			<updated>2011-01-11T12:29:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=43538#p43538</id>
		</entry>
</feed>
