Скрипт VBS для копирования файла, а затем копирования пути к файлу и имени файла в буфер обмена

Я пытаюсь найти сценарий, который позволит мне щелкнуть правой кнопкой мыши файл в XP (или 7), а затем выбрать и выбрать вариант (например, «Копировать на мой сервер»).

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

По сути, это позволило бы мне скопировать изображение с моего компьютера на определенный сервер, а затем вставить это место в мою форму. Есть смысл?

Я нашел некоторый код VBS, который будет копировать файл, и некоторый код VBS, который позволит мне щелкнуть файл правой кнопкой мыши, чтобы отобразить его местоположение. Но я понятия не имею, как их совместить. Есть идеи, как это сделать?

Копировать код:

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "\\file to be copied path", "\\destination directory"

Получить код пути (требуется редактирование реестра для отображения в контекстном меню):

set oFso = createObject("scripting.filesystemobject")

if wscript.arguments.count >= 1 then

    strPath = wscript.arguments(0)


    strDriveName = ofso.GetDriveName(strPath)

    set oDrive = ofso.GetDrive(strDriveName)



    Select Case oDrive.DriveType
            Case 0: t = "Unknown"
        Case 1: t = "Removable"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select

    strFileName = ofso.GetFileName(strPath)

    test = inputbox("The path is...","Path", strPath)

else

    msgbox "no args"

end if

person Dumont    schedule 16.06.2011    source источник


Ответы (1)


Этот код примет один аргумент (имя файла) и переместит его в место, указанное в sLocation в верхней части кода. После этого он отобразит подтверждение и поместит путь к файлу (в новом месте) в буфер обмена для вставки.

Насколько я знаю, VBScript не имеет возможности напрямую манипулировать буфером обмена, поэтому мы передаем это команде MSDOS clip, чтобы сделать это.

Option Explicit
' Change sLocation in the line below to the folder you want to move files to.
Dim sLocation : sLocation = "C:\Temp"
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim wsh : Set wsh = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Count = 0 Then
    MsgBox "Missing a filename!"
    WScript.Quit
End If
If fso.FileExists(WScript.Arguments(0)) = False Then
    MsgBox "File '" & WScript.Arguments(0) & "' doesn't exist!"
    WScript.Quit
End If
Dim oFile : Set oFile = fso.GetFile(WScript.Arguments(0))
fso.CopyFile oFile.Path, sLocation
Dim sNewLocation : sNewLocation = sLocation & "\" & oFile.Name
wsh.Run "cmd.exe /c echo " & sNewLocation & "| clip", 0, True
Msgbox "File moved to " & sNewLocation & VbCrLf & "and new path copied to clipboard."
Set fso = Nothing
Set wsh = Nothing
Set oFile = Nothing

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

person Richard    schedule 06.12.2011
comment
Обожаю это клип-решение! Большинство других решений полагаются на Internet Explorer, который теперь запрашивает у пользователя доступ к буферу обмена. Если вы не показываете IE, сценарий молча завершает работу. Это клип-решение отлично работает. :-) - person Justin Putney; 11.05.2017