返回列表 发帖
这样试试
Dim fso, objShell, strDesktop, strCurrentDir
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
strDesktop = objShell.SpecialFolders("Desktop")
strCurrentDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")-1)
Dim objFile, strName, strLnkName, objLnk
For Each objFile In fso.GetFolder(strCurrentDir).Files
    IF LCase(Right(objFile.Path, 4)) = ".exe" Then
        strName = fso.GetBaseName(objFile.Path)
        strLnkName = strDesktop & "\" & strName & ".lnk"
        Set objLnk = objShell.CreateShortcut(strLnkName)
        objLnk.TargetPath = objFile.Path
        objLnk.WorkingDirectory = strCurrentDir
        objLnk.Save
    End If
NextCOPY

TOP

回复 45# pcl_test


    不是  ,我是在桌面,那个路径是对的
学以致用!不耻下问!

TOP

回复 46# WHY


    你给的代码,运行不了啊  ,不管是否有管理员权限运行都是一闪而过啊
学以致用!不耻下问!

TOP

本帖最后由 WHY 于 2016-1-5 21:18 编辑

那这样呢?
保存为Test.bat,把Test.bat与你的exe文件放在同一文件夹下
@if (0)==(0) echo off
pushd "%~dp0"
dir /b /a-d *.exe | cscript //nologo //e:jscript "%~f0" "%~dp0"
pause & exit
@end
var strCurrentDir = WScript.Arguments(0);
var objShell = new ActiveXObject('WScript.Shell');
var strDesktop = objShell.SpecialFolders('Desktop');
while(!WScript.StdIn.AtEndOfStream){
    var strFile = WScript.StdIn.ReadLine();
    var strName = strFile.replace(/(.+)\.exe$/i, '$1');
    var strLnkName = strDesktop + '\\' + strName + '.LNK';
    var objLnk = objShell.CreateShortcut(strLnkName);
    objLnk.TargetPath = strCurrentDir + '\\' + strFile;
    objLnk.WorkingDirectory = strCurrentDir;
    objLnk.Save();
}COPY

TOP

回复 47# nevergiveup520

你在H:\lvse_ruanjian运行40楼的代码能显示正确的exe路径?

TOP

回复 50# pcl_test

  40楼代码运行后的结果。没有用管理员权限运行就可以得到!
学以致用!不耻下问!

TOP

回复 43# pcl_test


   桌面文件夹里确实有exe程序,但是运行那代码  不是我想要的结果
学以致用!不耻下问!

TOP

那这样呢?
保存为Test.bat,把Test.bat与你的exe文件放在同一文件夹下
WHY 发表于 2016-1-5 21:04



    你给这个代码运行正常,可是我的软件并不是在同一个目录下的,有些便捷绿化软件还有很多子目录,我就把好多绿色软件的文件夹放在一个文件里,而我需要把这些文件夹里的exe程序创建快捷方式到我指定的文件夹里如下图:还得劳请你帮我再修改下!谢谢啦!
学以致用!不耻下问!

TOP

把当前目录(包括子目录)中的所有exe文件创建LNK快捷方式到 "E:\快捷方式" 目录中
快捷方式文件有重名时,后创建的文件覆盖之前创建的文件。
@if (0)==(0) echo off
set "strLnkDir=E:\快捷方式"
md "%strLnkDir%" 2>nul
pushd "%~dp0"
dir /b /s /a-d *.exe | cscript //nologo //e:jscript "%~f0" "%strLnkDir%"
pause & exit
@end
var strLnkDir = WScript.Arguments(0);
var objShell = new ActiveXObject('WScript.Shell');
while(!WScript.StdIn.AtEndOfStream){
    var strFile = WScript.StdIn.ReadLine();
    var strName = strFile.replace(/.+\\(.+)$/i, '$1');
    var strLnkName = strLnkDir + '\\' + strName + '.LNK';
    try {
        var objLnk = objShell.CreateShortCut(strLnkName);
        objLnk.TargetPath = strFile;
        objLnk.WorkingDirectory = strFile.replace(/(.+)\\.+$/, '$1');
        objLnk.Save();
        objLnk = null;
    } catch(e) {
        WScript.Echo(e.message);
    }
}COPY

TOP

回复 54# WHY

再次感谢各位大神的帮助,特别是WHY大神及版主pcl_test 这两天的耐心帮助解答,再次感谢两位,谢谢!!!!
   
若是这段代码里面再加入可以自动判断只创建可以独立运行的程序的图标就更完美了,欢迎各路大神前来PK!!

PS: 这代码其实已经够我使用了,再次感谢他们!谢谢!!@WHY ,@pcl_test
学以致用!不耻下问!

TOP

返回列表