Войти

Показать полную графическую версию : [решено] копирование файла во все подкаталоги каталога с проверкой


yanus74
16-08-2014, 21:44
Здравствуйте!
накалякал вот такую конструкцию

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
Поскольку файл "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
Да, наверно вы правы. Спасибо!




© OSzone.net 2001-2012