找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: jack2023

[其他] 求bat脚本可以获取某软件安装根目录

[复制链接]
发表于 2023-5-16 19:07:08 | 显示全部楼层
  1. @echo off
  2. set /p scfile=
  3. set scfile=%scfile:\=\\%
  4. set scfile=%scfile:"=%
  5. for /f "tokens=2 delims==" %%i in ('wmic path win32_shortcutfile where "name='%scfile%'" get target /value') do (
  6. echo,"%%~dpi"
  7. md "%%~dpi123"
  8. )
  9. pause
复制代码
 楼主| 发表于 2023-5-16 22:24:54 | 显示全部楼层
本帖最后由 jack2023 于 2023-5-16 22:26 编辑

好像不行呢  大佬 看下哪里填错了
 楼主| 发表于 2023-5-16 22:26:04 | 显示全部楼层
回复 16# buyiyang

好像不行呢  大佬 看下哪里填错了
发表于 2023-5-16 22:46:25 | 显示全部楼层
回复 18# jack2023


建议以后不要再说“不行”、“一闪而过”、“没有反应”之类的话,因为这对于想要给你进一步帮助的人来说没有任何意义。希望大家都能学会的一个知识点是:如何查看代码的报错信息。

如果你在执行.bat脚本,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
发表于 2023-5-17 00:27:38 | 显示全部楼层
这个应该能满足需求
  1. @set @i=0 /* & @echo off&cscript -E:JScript -nologo %0 & pause & exit */
  2. var shell = WScript.CreateObject("WScript.Shell");
  3. var desktopPath = shell.SpecialFolders("Desktop");
  4. var fso = new ActiveXObject("Scripting.FileSystemObject");
  5. var folder = fso.GetFolder(desktopPath);
  6. var files = new Enumerator(folder.Files);
  7. for (; !files.atEnd(); files.moveNext()) {
  8.     var file = files.item();
  9.     if (file.Name.toLowerCase().indexOf(".lnk") == file.Name.length - 4) {
  10.         var ink = shell.CreateShortcut(file.Path);
  11.         var target = ink.TargetPath;
  12.         if (target) {
  13.             var targetfolder = fso.GetParentFolderName(ink.TargetPath);
  14.             WSH.Echo(file.Path, '\n', target, '\n', targetfolder, '\n');
  15.        }
  16.     }
  17. }
复制代码
 楼主| 发表于 2023-5-17 09:09:12 | 显示全部楼层
回复 20# terse


    谢谢大佬,这个可以读取桌面的所有快捷方式的名称及路径,我的意思是需要某一个自定义的快捷方式,
比如:搜狗高速浏览器
C:\Users\Administrator\Desktop\搜狗高速浏览器.lnk
D:\Program Files\sougou\SogouExplorer\SogouExplorer.exe
D:\Program Files\sougou\SogouExplorer
比如我需要读取这个的   搜狗高速浏览器.lnk的根目录为 D:\Program Files\sougou\SogouExplorer
并在根目录下面新建1个123的文件夹



麻烦帮忙完善一下代码,谢谢
发表于 2023-5-17 10:38:43 | 显示全部楼层
本帖最后由 terse 于 2023-5-17 12:34 编辑

回复 21# jack2023
把快捷方式图标拖进去处理
  1. @set @i=0 /* & @echo off&cscript -E:JScript -nologo %0 %* & pause & exit */
  2. var ws = new ActiveXObject("WScript.Shell");
  3. var fso = new ActiveXObject("Scripting.FileSystemObject");
  4. for (var i = 0; i < WSH.Arguments.length; i++)
  5. {
  6.       var ink = ws.CreateShortcut(WSH.Arguments(i));
  7.       var folder = fso.GetParentFolderName(ink.TargetPath);
  8.       var newFolder = fso.BuildPath(folder, "new_folder");
  9.       if (!fso.FolderExists(newFolder)) fso.CreateFolder(newFolder);
  10. }

复制代码
发表于 2023-5-17 10:41:18 | 显示全部楼层
回复 22# terse


    估计是要改成支持拖放的比较方便
发表于 2023-5-17 12:06:39 | 显示全部楼层
回复 18# jack2023


    双击执行,拖动快捷方式到窗口,回车。

评分

参与人数 1技术 +1 收起 理由
jack2023 + 1 拖入可以用,谢谢,能改成套娃式,可以自己 ...

查看全部评分

发表于 2023-5-17 18:54:11 | 显示全部楼层
  1. @echo off
  2. set "scfile=QQ"

  3. for %%i in ("%USERPROFILE%\Desktop") do set "scp=%%~pi"
  4. if exist %USERPROFILE%\Desktop\*%scfile%*.lnk (
  5. set "scp=%scp:\=\\%"
  6. ) else if exist %PUBLIC%\Desktop\*%scfile%*.lnk (
  7. set "scp=\\users\\public\\desktop\"
  8. ) else (echo,%scfile% is nonexistent&pause&exit)
  9. set "scfile=%%%scfile%%%"
  10. for /f "tokens=2 delims==" %%i in ('wmic path win32_shortcutfile where "Path='%scp%' and extension='LNK' and FileName like '%scfile%'" get target /value') do (
  11. echo,"%%~dpi"
  12. md "%%~dpi123"
  13. )
  14. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
jack2023 + 1 可以用 谢谢大佬

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 20:46 , Processed in 0.012674 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表