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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Добавить "Отправить на \\server\" в контекстное меню (http://forum.oszone.net/showthread.php?t=228402)

flower 21-02-2012 13:55 1863504

Добавить "Отправить на \\server\" в контекстное меню
 
Собственно, сабж. Пытаюсь решить задачу, но не могу..
В реестре прописал так:

cmd /k copy %1 \\server\Public\

Суть команды - банальное копирование файла на общественную файлопомойку в сети.
Желательно, конечно, реализовать это через интерфейс WIndows, а не через CMD, я не знаю, как это сделать. В том смысле, что командная строка вряд ли запросит что-либо, если начальный файл будет совпадать с конечным.
Пишет, не удается найти указанный файл. Нада как-то переменную текущего каталога добавить перед именем файла. А как сделать - я хз.
Помогите, товарищи-шаманы)

Blast 21-02-2012 14:00 1863510

Можно добавить команду Копировать в папку... в контекстное меню файлов. Для этого примените твик реестра
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers]

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\{C2FBB630-2971-11D1-A18C-00C04FD75D13}]

А можете так: Пуск - Выполнить - shell:sendto - Правая кнопка мыши - Создать - Ярлык - указываете путь к папке \\server\Public\ - называете как будет выглядеть пункт меню Отправить

flower 21-02-2012 14:24 1863531

Второй вариант я проделал, но он несколько неудобен, как и первый..
Лишние так сказать выборки строк в меню..

Можно ли вот это "копировать в папку" настроить сразу на определенный сетевой адрес?

Iska 21-02-2012 15:16 1863561

flower, для этого нужно написать и зарегистрировать библиотеку, которая будет сие делать.

Morpheus 21-02-2012 15:39 1863583

У меня всё нормально копируется...
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC]
@="Копировать в папку"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC\command]
@="cmd /k copy %1 \\\\server\\Public"


flower 21-02-2012 15:50 1863591

Morpheus:

при копировании с рабочего стола выдает ошибку:

Не удается найти указанный файл.

C:\Documents and Settings\userprofile\Рабочий стол>


Подозреваю, что виноваты русские буквы.
При копировании с корня диска С все нормально проходит, однако командная строка остается.

Как я понимаю, если файл с таким именем уже есть на сервере, он будет перезаписан. Без диалога подтверждения.. Это не есть гуд.

Blast 21-02-2012 15:54 1863596

Цитата:

Цитата flower
будет перезаписан. Без диалога подтверждения »

должен оставаться запрос, а если нет, используйте параметр /-y - обязательный запрос на перезапись
Цитата:

Цитата flower
виноваты русские буквы »

заключите параметр в кавычки - \"%1\"

Morpheus 21-02-2012 16:00 1863602

Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC]
@="Копировать в папку"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC\command]
@="cmd /c copy /-y \"%1\" \\\\server\\Public"


flower 21-02-2012 16:13 1863609

Благодарю за советы, буду разбираться..

flower 21-02-2012 16:31 1863622

Нормально вроде теперь работает. За исключением одного бага..
Если копировать папку, то в месте назначения оказываются ФАЙЛЫ из этой папки, но не сама папка с файлами.

Попробовал хитрость: cmd /c copy "%1/*.*" \\brk\Public >123.txt
Не помогло все равно..

Blast 21-02-2012 16:33 1863626

Цитата:

Цитата flower
Если копировать папку »

используйте команду xcopy, синтаксис по xcopy /?

flower 21-02-2012 16:42 1863635

cmd /c xcopy "%1" \\brk\Public >123.txt

все равно копирует файлы без папки.

Сделал вывод в лог:

C:\Documents and Settings\123\ђ*Ў®зЁ© бв®«\WSUS\FrameWorklangPack.reg
C:\Documents and Settings\123\ђ*Ў®зЁ© бв®«\WSUS\readme.txt
C:\Documents and Settings\123\ђ*Ў®зЁ© бв®«\WSUS\scr.PNG
C:\Documents and Settings\123\ђ*Ў®зЁ© бв®«\WSUS\WSUS.reg
‘Є®ЇЁа®ў**® д*©«®ў: 4.

Копировалась папка WSUS с четырьмя файлами, описанными выше.

Blast 21-02-2012 16:45 1863639

используйте параметр /e для копирования структуры каталогов

Код:

cmd /c xcopy "%1" /e \\brk\Public

Morpheus 21-02-2012 20:01 1863797

Xcopy тут не обойтись.
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC]
@="Копировать в папку"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC\command]
@="\"C:\\Users\\user\\Desktop\\CopyFolder.cmd\" %1"

а в cmd кидаем этот код:
Код:

@Echo Off

Set $SRC=%1
Set $DST=\\brk\Public

For %%i In ("%$SRC%") Do Set $N=%%~nxi
XCopy "%$SRC%" "%$DST%\%$N%" /E/H/R/K/Q/Y/I

http://forum.oszone.net/post-1223671.html#post1223671
но когда появляются пробелы работать перестаёт. Нужно просить коллег из скриптов код допилить, чтобы и пути с пробелами воспринимались и одновременно для файлов срабатывал. Переношу.

Blast 21-02-2012 20:34 1863832

Цитата:

Цитата Morpheus
Xcopy тут не обойтись. »

правда )

flower 22-02-2012 09:12 1864092

Благодарю за помощь) Буду ждать доработки скрипта. Сам в bat-скриптинге, увы, ничего не смыслю :(

Iska 23-02-2012 09:48 1864881

Цитата:

Цитата Morpheus
но когда появляются пробелы работать перестаёт. »

Было ж…
Код:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC]
@="Копировать в папку"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\FileC\command]
@="\"C:\\Users\\user\\Desktop\\CopyFolder.cmd\" \"%1\""

и:
Код:

@Echo Off

Set $SRC=%~1
Set $DST=\\brk\Public

For %%i In ("%$SRC%") Do Set $N=%%~nxi
XCopy "%$SRC%" "%$DST%\%$N%" /E/H/R/K/Q/Y/I

Что не сработало у меня:

1. Копирование при выделении нескольких объектов. Похоже, что пакетный файл вовсе не вызывается (впрочем, и не пакетный файл — тоже). [Update: последующая проверка показала, что это ошибки на конкретной, отдельно взятой системе.]
2. При попытке копирования файла появляется запрос вида:
читать дальше »
Код:

Что означает E:\Песочница\0120\0002\Eula.txt:
имя файла или каталога
(F = файл, D = каталог)?


P.S. У меня Windows XP; «xcopy.exe» версии:
читать дальше »
Код:

╔══════════════════════════ Версия файла ══════════════════════════╗
║ Полная версия:        5.1.2600.5512                            ║
║ Язык:                  Английский (США)                          ║
║ Описание:              Extended Copy Utility                    ║
║ Копирайт:              rosoft Corporation. All rights reserved.  ║
║ Архитектура:          I386                                      ║
║──────────────────────────────────────────────────────────────────║
║ Комментарий:                                                    ║
║ Компания:              Microsoft Corporation                    ║
║ Версия файла:          5.1.2600.5512 (xpsp.080413-2111)          ║
║ Внутреннее имя:        xcopy                                    ║
║ Торговая марка:                                                  ║
║ Оригинальное имя:      XCOPY.EXE                                ║
║ Частная сборка:                                                  ║
║ Продукт:              Microsoft® Windows® Operating System      ║
║ Версия продукта:      5.1.2600.5512                            ║
║ Специальная сборка:                                              ║
║──────────────────────────────────────────────────────────────────║



Я по-прежнему убеждён, что ярлык в SendTo надёжнее.

Morpheus 23-02-2012 14:28 1865136

Цитата:

Цитата Iska
Было ж… »

Не знал про тильду... Спасибо!
Цитата:

Цитата Iska
Что не сработало у меня: »

Хм... у меня всё срабатывает. И для нескольких файлов и для папок. В случае с папками всё копируется без вопросов, а для файлов появляется
Цитата:

Цитата Iska
запрос вида: »

где жму f и файл тоже копируется...

Проверил и в XP - тоже всё ок. Xcopy - 5.1.2600.5512.

Iska 23-02-2012 22:28 1865398

Цитата:

Цитата Morpheus
Хм... у меня всё срабатывает. И для нескольких файлов и для папок. »

Значит, спишем на моих местных тараканов — возможно, что-то с моей системой.

Iska 24-02-2012 17:21 1865818

Цитата:

Цитата Morpheus
Проверил и в XP - тоже всё ок. Xcopy - 5.1.2600.5512. »

Morpheus, проверил на других машинах: при выделении нескольких объектов — работает. Поправил свой пост #17.

flower 27-02-2012 11:44 1867531

Проверил: при копировании папки (winXP SP3 x86) до директории назначения доходят лишь файлы из этой папки, структура нарушается (как и было).

Iska 27-02-2012 14:41 1867632

flower, проверил ещё раз. Копирует, структура не нарушается. Код брал из #17. Windows XP SP3 Professional, x86.

flower 27-02-2012 16:52 1867749

Да, верно, баг у меня был временный.
Действительно, папку с файлами теперь копирует в нужное место.
За эту операцию выражаю благодарность :)

Кстати, нельзя ли настроить следующий функционал: при совпадении имен конечного и исходного файла будет показан диалог "Вы действительно хотите заменить файл" ?

Morpheus 28-02-2012 01:04 1868050

Все справились с багами - молодцы! :)
Iska, а где почитать про вышеупомянутую тильду?

flower, дыкжеш там всё просто...
Цитата:

Цитата Morpheus
а в cmd кидаем этот код: »

Код:

@Echo Off

Set $SRC=%1
Set $DST=\\brk\Public

For %%i In ("%$SRC%") Do Set $N=%%~nxi
XCopy "%$SRC%" "%$DST%\%$N%" /E/H/R/K/Q/-Y/I



Время: 23:55.

Время: 23:55.
© OSzone.net 2001-