Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Копирование папок с условием (http://forum.oszone.net/showthread.php?t=285962)

sjaybez 03-08-2014 16:06 2384739

Копирование папок с условием
 
Хочу скопировать все "новые папки" с диска со всем содержимым, но при этом возникла проблема: если внутри "новой папки" есть ещё одна "новая папка" батник и её отдельно тоже скопирует, что не нужно, т.к. она уже будет скопирована как подкаталог. Помогите решить проблему. Код который я составил и нужно доработать:

For /f "delims=" %%H In ('dir /A:D /S /B "X:\*новая папка*"') Do (
xcopy /E /C /I /Q /H /Y /N /J "%%H" %cd%
)

Iska 03-08-2014 18:25 2384782

«/d».

Georgio 03-08-2014 19:08 2384812

Код:

@echo off
echo новая папка.*\\>.tmp
for /f "delims=" %%H in ('"dir /ad/b/s "X:\*новая папка*" 2>nul| findstr /irvg:.tmp"') do (
 xcopy /c/e/h/i/j/n/q/y "%%H" "%cd%\%%~nxH">nul
 )
del .tmp
exit /b

Сохранить в кодировке DOS-866.

sjaybez 03-08-2014 20:56 2384849

Georgio, Большое спасибо. Помогло
Можно объяснить как он проигнорировал повторяющиеся строки который появляются при поиске "dir"? И почему нужна именно такая запись в файле .tmp "новая папка.*\\"?
И ещё спасибо что подправили "%cd%\%%~nxH" эту запись, не знал что так можно. А в "nxH" x - является обязательным? или можно "nH" это же папка?

Iska 03-08-2014 21:20 2384853

Цитата:

Цитата sjaybez
как он проигнорировал повторяющиеся строки который появляются при поиске "dir"? »

Фильтрацией посредством «findstr.exe».

Цитата:

Цитата sjaybez
И почему нужна именно такая запись в файле .tmp "новая папка.*\\"? »

Потому что таково регулярное выражение на исключение строк, содержащих папки, вложенные в «*новая папка*». Ключевым здесь является экранированный символ разделителя пути «\».

Цитата:

Цитата sjaybez
А в "nxH" x - является обязательным? или можно "nH" это же папка? »

У папки тоже может быть расширение. Как пример — «WINDOWS.OLD».

sjaybez 03-08-2014 21:23 2384855

Iska, Спасибо за разъяснение. Я понял - /irvg -это перечень параметров findstr, которые позволили профильтровать пути, вместе с сочетанием "новая папка.*\\"

Iska 03-08-2014 22:19 2384867

Именно.
Цитата:

Цитата sjaybez
вместе с сочетанием »

С регулярным выражением.


Время: 10:25.

Время: 10:25.
© OSzone.net 2001-