zoukankan      html  css  js  c++  java
  • 写个设置命令的VBS脚本工具。

    '作者:刘先勇 (Eric Liu)
    '将以下代码复制并保存为"系统命令.VBS",并运行安装。
    '安装成功后,可通过在程序、文件或文件夹上点右键->发送到->系统命令来设置一个命令,然后在运行中就可以输入该命令打开文件了。
    '脚本运行一次后在右键菜单中增加从这里运行CMD的快捷方式,还增加查找目标文件快捷方式

    'On Error Resume Next
    If (lcase(right(wscript.fullname,11))<>"wscript.exe") then
    set objShell=createObject("wscript.shell")
    objShell.Run("Wscript //nologo "&chr(34)&wscript.scriptfullname&chr(34))
    Wscript.Quit
    end if

    Set pCmd=CreateObject("WScript.Shell")
    Set pFso=CreateObject("Scripting.FileSystemObject")
    Set pShell = CreateObject("Shell.Application")
    Set pSysEnv = CreateObject("WScript.Shell").Environment("system")
    strComputer = "." 
    Set pWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

    Function LGetPath(pFile)
        iLastSepPos = InstrRev(pFile, "\", -1, 1)
        If iLastSepPos <= 0 Then
            LGetPath=""
            Exit Function
        Else
            LGetPath = Left(pFile, iLastSepPos-1)
        End If
    End Function

    Function GetLnkTarget(linkPath)
        linkPath=Replace(linkPath, "\", "\\")
        Set pFiles = pWMIService.ExecQuery("Select * From Win32_ShortcutFile WHERE Name = " & "'" & linkPath & "'")  
        For Each pFile in pFiles
            GetLnkTarget=pFile.Target
            Exit For
        Next
    End Function

    Function ListSysCmd(pFileName)
        SysCmdPath=pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd")
        Set pFolder = pFso.GetFolder(SysCmdPath)
        Set pFile = pFso.OpenTextFile(pFileName, 2, True)

        For Each file in pFolder.Files
            linkPath=SysCmdPath & "\" & file.name
            IF UCASE(Right(file.name, 4))=".LNK" Then
                Set lnkFiles = pWMIService.ExecQuery("Select * From Win32_ShortcutFile WHERE Name = " & "'" & Replace(linkPath, "\", "\\")  & "'")  
                For Each lnkFile in lnkFiles
                    pFile.WriteLine(linkPath & "                " & lnkFile.Target)
                Next
            Else
                pFile.WriteLine linkPath  
            End IF
        Next
    End Function

    Function GetConfigPath
        Set pFolder = pShell.BrowseForFolder(0, "请选择一个目录:", 0, "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
        If pFolder Is Nothing Then
            Wscript.Quit
        End If
        Set pFolderItem = pFolder.Self
        GetConfigPath = pFolderItem.Path
    End Function

    Sub SetEnv(pPath, pValue)
        If pValue="" Then
            pSysEnv.Remove(pPath)
        Else
            pSysEnv(pPath) = pValue
        End IF
    End Sub

    Function GetEnv(pPath)
        GetEnv = pSysEnv(pPath)
    End Function

    '判断一个字符串是否匹配一个正则表达式
    '   ^\w+[@]\w+[.]\w+$       E-Mail地址
    '   ^[0-9-]+$               数字
    Function IsMatch(Str, Patrn)
      Set r = new RegExp
      r.Pattern = Patrn
      IsMatch = r.test(Str)
    End Function

    Sub AddNewCmd(pShortCutName, pTargetPath, pCmdLocation)
    IF pShortCutName<>"" Then
      LinkDir = pCmdLocation
      Set pCmdLink = pCmd.CreateShortcut(LinkDir & "\" & pShortCutName & ".lnk")
      pCmdLink.TargetPath = pTargetPath
      pCmdLink.WindowStyle = 1
      pCmdLink.Hotkey = ""
      pCmdLink.IconLocation = "%systemroot%\system32\shell32.dll,146"
      pCmdLink.Description = "Shortcut Created At " & Date() & " " & Time()
      pCmdLink.WorkingDirectory = LGetPath(pTargetPath)
      pCmdLink.Save
    End IF
    End Sub

    Set pArgs=Wscript.Arguments
    If pArgs.Count = 0 Then  '无参运行,复制自身到SendTo文件夹。

    MsgBox    "注意无参运行即执行安装过程!" & VBCRLF & _
                    "安装过程包括以下操作:" & VBCRLF & VBCRLF & _
                     "1、在发送到目录中建立该脚本的快捷方式;" & VBCRLF & _
                     "2、完成安装后可通过发送到建立快捷方式;" & VBCRLF & _
                     "3、所有快捷命令可通过运行(WIN+R)执行。" & VBCRLF
    SysCmdPath = GetConfigPath
    If SysCmdPath = "" Then WScript.Quit()

    pCmd.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd", SysCmdPath, "REG_SZ"
    'Path = pCmd.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\Path")
    Path = GetEnv("Path")

    If Right(SysCmdPath, 1)="\" Then  SysCmdPath = Left(SysCmdPath, Len(SysCmdPath)-1)
    SysCmdPathPattern ="(;)?(" & Replace(SysCmdPath, "\", "\\") & ")(\\)?(;|$)"
    If Not IsMatch(Path, SysCmdPathPattern) Then
          Path = Path & ";" & SysCmdPath
          SetEnv "Path", Path
    End If

    thisFile = WScript.ScriptFullName
    IF thisFile<>SysCmdPath & "\" & WScript.ScriptName Then
         pFso.CopyFile thisFile, SysCmdPath & "\"
         thisFile = SysCmdPath & "\" & WScript.ScriptName
    End IF

    AddNewCmd "N系统命令", thisFile, pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SendTo")
    '在右键菜单中增加创建当前文件或文件夹的系统快捷命令的菜单项
    pCmd.RegWrite "HKEY_CLASSES_ROOT\*\shell\G创建系统命令\command\", "WScript.exe " & thisFile & " ""%1""", "REG_SZ"
    pCmd.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\G创建系统命令\command\", "WScript.exe " & thisFile & " ""%1""", "REG_SZ"
    '在右键菜单中增加在当前路径打开CMD窗口命令的菜单项
    pCmd.RegWrite "HKEY_CLASSES_ROOT\*\shell\Q在此打开CMD\command\", "CMD /K PUSHD ""%1\\..""", "REG_SZ"
    pCmd.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\Q在此打开CMD\command\", "CMD /K PUSHD ""%1""", "REG_SZ"

    '在右键菜单中增加在查找快捷方式位置的菜单项
    pCmd.RegWrite "HKEY_CLASSES_ROOT\*\shell\W查找目标位置\command\", "WScript.exe " & thisFile & " S ""%1""", "REG_SZ"
    pCmd.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\W查找目标位置\command\", "WScript.exe " & thisFile & " S ""%1""", "REG_SZ"

    AddNewCmd "Q", pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd"), pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd")
    AddNewCmd "QC", thisFile, pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd")
    MsgBox "安装成功!"
    ElseIf pArgs.Count = 1 Then
        IF UCase(pArgs(0))="EDIT" Then         '只有一个参数且为Edit时, 打开此脚本进行编辑。
            pCmd.Run("Notepad.exe " & WScript.ScriptFullName)
            WScript.Quit()
        ElseIF UCase(pArgs(0))="LIST" Then    '只有一个参数且为List时, 列出所有已经建立的快捷方式和其对应的目标文件。
            ResultFile=pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd") & "\ListSysCmd.txt"
            ListSysCmd ResultFile
            pCmd.Run("Notepad.exe " & ResultFile)
            WScript.Quit()
        Else                                '只有一个参数时, 默认处理方式是建立传入的文件路径的快捷方式。
            pShortCutName=InputBox("请输入该快捷方式的名字:", "创建快捷命令...", "")
            IF pShortCutName="" Then WScript.Quit()
            AddNewCmd pShortCutName, pArgs(0), pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd")
        End IF
    ElseIf pArgs.Count = 2 Then
        IF UCase(pArgs(0))="S" Then            '查找快捷方式目标文件位置
            '判断是否包括\,从右键菜单执行会直接传递目标地址,从快捷方式中需要组合快捷方式的地址。
            IF Instr(pArgs(1), "\") > 0 And Instr(pArgs(1), ".lnk") = 0 Then    '从右键菜单执行
                pCmd.Run("Explorer.exe /select, " & pArgs(1))
            Else                            '从命令行执行
                IF Instr(pArgs(1), "\") > 0 Then  '全路径.lnk路径
                    linkPath=pArgs(1)
                Else
                    linkPath=pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd") & "\" & pArgs(1) & ".lnk"
                End IF
                linkPath=Replace(linkPath, "\", "\\")
                Set pFiles = pWMIService.ExecQuery("Select * From Win32_ShortcutFile WHERE Name = " & "'" & linkPath & "'")  
                For Each pFile in pFiles    
                    pCmd.Run("Explorer.exe /n, /select, " & pFile.Target)
                Next
            End IF
        Else
            'FileLocation, ShortCutName
            pShortCutName=pArgs(1)    
            AddNewCmd pShortCutName, pArgs(0), pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\SysCmd")
        End IF
    End If

     

    复制好脚本存为Syscmd.vbs或其它名称,就可以双击安装了,安装过程很简单,只有以下几步.

    1.双击开始安装

    install1

    2.选择安装目录

     image image

    3.安装成功

    image

    现在再来查看一下右键菜单

    1. 创建快捷命令功能

    image

    在你要创建快捷命令的exe程序或任何其它文件上点右键,然后选择快捷菜单中的"G创建系统命令",或者直接按字母G,弹出以下对话框:

    image

    直接输入快捷命令,如QQ,快捷命令QQ就创建成功了.

    然后想启动QQ时直接WIN+R打开运行窗口,并输入QQ回车,QQ程序启动就这么简单

    image

    image

    2.在这里打开CMD功能

    在任何文件或文件夹上点右键,然后选择"Q在此打开CMD"或者直接按Q,就会以此目录为工作目录打开CMD窗口

    image

     image

    3.查找目标位置功能

    对于Windows快捷方式,经常遇到想要查找其它文件位置的情况,一般都是点右键然后查属性,查点查找文件找到,现在任何文件或文件夹上点右键都会有如下菜单,选择"W查找目标位置"或直接按W,可以查找到快捷方式的目标文件或文件夹位置,也可以查找到桌面上程序的目录位置.

    image

    直接定位文件所在目录并打开:

    image

  • 相关阅读:
    (转)一文讲清TCP/IP 协议
    Java框架之Spring Boot和Spring Cloud区别
    php大力力 [006节]初步接触认识phpMyAdmin
    php大力力 [005节] php大力力简单计算器001
    php大力力 [004节]PHP常量MAMP环境下加载网页
    php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
    php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动
    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
    C# DataSet与DataTable的区别和用法 ---转载
    【SqlServer】利用sql语句附加,分离数据库-----转载
  • 原文地址:https://www.cnblogs.com/cnLiou/p/1579979.html
Copyright © 2011-2022 走看看