Запустите пакетный скрипт, щелкнув правой кнопкой мыши по любому файлу - PullRequest
9 голосов
/ 28 июля 2011

Идея состоит в том, чтобы щелкнуть правой кнопкой мыши любой файл и затем выбрать «резервная копия» в выпадающем списке, который просто копирует файл и добавляет дату в конец его имени, а затем, возможно, перемещает эту копию на другой диск.

Я хотел бы получить способ запуска пакетного сценария, щелкнув правой кнопкой мыши файл и передав его в качестве аргумента (не вводя его), или каким-то образом зная, что файл должен использоваться в сценарии.

В основном для Windows XP, он должен быть родным, так как многие компьютеры сайта, на которых я работаю, не принадлежат нам, и я не хочу копировать больше файлов, чем необходимо, или полагаться на что-то большее, чем стандартные доступные команды ( две трети машин не имеют силовой оболочки и т. д.)

Я знаю, как вы можете изменить параметры файла, чтобы открыть cmd в определенной папке (ниже), и я, вероятно, изменил это, чтобы работать для 1 определенного типа файла, но я не хочу добавлять ключ для каждого тип файла на машине.

[HKEY_CLASSES_ROOT \ Folder \ оболочки \ 1.bat \ команда] @ = "c: \ windows \ system32 \ cmd.exe \"% 1 \ ""

С другого сайта одна работа вокруг, которая почти решает это для меня

jvierra - «Windows всегда имела такую ​​возможность без изменения реестра.

Поместите файл bat или VBS на рабочий стол. Перетащите файл на значок летучей мыши. Летучая мышь получит имя файла отброшенного файла как% 1, а vbscript получит его как WScript.Arguments (0).

Попробуй. Это работает довольно хорошо. С этого момента летучая мышь или скрипт могут делать с файлом все что угодно. "

Ответы [ 2 ]

16 голосов
/ 28 июля 2011

Вы можете добавить свою биту в меню «Отправить».См. http://support.microsoft.com/kb/310270

Вкратце, просто скопируйте файл .bat в пользовательскую папку SendTo.

COPY MYBACKUP.BAT "%USERPROFILE%\SendTo"

пользователь вызывает вашу летучую мышь, выбирая пункт меню «Отправить».

для более сложной параметризации, такой как изменение текста, отображаемого в меню, или значка ... вы можете создать ссылку на ваш .BAT и поместить ссылку в папку SendTo вместо самого .bat

COPY "My very special backup.lnk" "%USERPROFILE%\SendTo"

Сначала вы можете запустить быстрый тест.Создайте файл BAT с этим содержимым и скопируйте его в папку Sendto.

@echo off
echo Current Directory is %cd%
echo Current batch run is %0 %~dpnx0
echo Subject is %1 %~dpnx1
pause  

Редактировать: после некоторых комментариев я исправил спецификацию папки SendTo в команде COPY, добавив необходимые кавычки;и я добавил тестовый пример и исправил синтаксис %~dpnx

2 голосов
/ 05 сентября 2013
Пример

@ PA (скопирован справа внизу для удобства просмотра) отключен.

@echo off
echo Current Directory is %cd%
echo Current batch run is %0 %dpnx0
echo Subject is %1 %dpnx1
pause  

У меня недостаточно репутации, чтобы отвечать на @PA.Вы забыли включить ~ в переменную.Эти вопросы и ответы мне очень помогли, поэтому я надеюсь, что это поможет кому-то еще.Спасибо @daniel и @ PA

Исправленный пример теста daniel ниже

@echo off
echo Current Directory is %cd%
echo Current batch run is %0 %~dpnx0
echo Subject is %1 %~dpnx1
pause

Если вы хотите просто отобразить имя файла без пути, вы должны использовать% ~ n1

пример:

echo Subject is %~n1
...