Компьютерный форум 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=286585)

yanus74 16-08-2014 21:44 2390206

копирование файла во все подкаталоги каталога с проверкой
 
Здравствуйте!
накалякал вот такую конструкцию
Код:

for /F "tokens=*" %a in ('dir F:\prise /s /A:d /b') do dir "%a\desktop.ini" /A:s /B | find "desktop.ini"==nul && copy /y f:\desktop.ini "%a"| attrib +h +s "%a\desktop.ini"
1. тут вроде все понято, в переменную записываю путь директории dir F:\prise /s /A:d /b
Код:

for /F "tokens=*" %a in ('dir F:\prise /s /A:d /b') do
2. в этой конструкции я проверяю, есть ли уже такой файл.
По логике find "desktop.ini" должен искать в выводе dir "%a\desktop.ini" /A:s /B строку desktop.ini, и если нету ==nul, то...
Код:

do dir "%a\desktop.ini" /A:s /B | find "desktop.ini"==nul
3. копировать в директорию файл, и делать его системным и скрытым
Код:

copy /y f:\desktop.ini "%a"| attrib +h +s "%a\desktop.ini"
Но не работает, не могу понять, где я допустил ошибку. Помогите пожалуйста.


p.s.
если кому интересно, в файле desktop.ini
Код:

[.ShellClassInfo]
DefaultDropEffect=4

не дает перетаскивать папки курсором, просто делает ярлычек - полезно в сетевых шарах, от случайных перетаскиваний

Georgio 16-08-2014 23:02 2390217

Поскольку файл "desktop.ini" является системным и скрытым, его нельзя заменить на другой копированием с помощью команды "copy" (будет отказано в доступе), и, следовательно, проверка его наличия в папках излишня:

Код:

for /f "tokens=*" %a in ('dir "F:\prise" /ad/b/s') do @copy "F:\desktop.ini" "%a">nul 2>&1&& attrib +h +s "%a\desktop.ini"
.

yanus74 17-08-2014 09:40 2390284

Да, наверно вы правы. Спасибо!


Время: 19:48.

Время: 19:48.
© OSzone.net 2001-