无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5966|回复: 19
打印 上一主题 下一主题

[求助] 有谁懂批处理的么·帮帮忙·谢谢· 已解决·

[复制链接]
跳转到指定楼层
1#
发表于 2016-6-16 12:26:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
2#
发表于 2016-6-16 18:43:18 | 只看该作者
本帖最后由 pogua007 于 2016-6-18 16:23 编辑

我不知道mshta命令整合VBS详细用法,但是我估计会很累。我知道的整合方法是独立的VBS文件需方对你有用
批处理部分
  1. set FileName=文件名.exe
  2. setlocal enabledelayedexpansion
  3. set /a xxx=0
  4. for %%a in(C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  5.   if exist %%a:\ (
  6.     for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" ') do (
  7.       if /i "%%~nxb" equ "%FileName%" (
  8.         set /a xxx+=1
  9.         call linkexe.vbs %%b !xxx!
  10.       )
  11.     )
  12.   )
  13. )
复制代码


批处理向 linkexe.vbs传递两个参数,一个是包含路径的的文件名,一个是为了防止找到多个同名文件生成的快捷方式发生覆盖,只显示最后一个,在批处理中多传递给VBS一个序数。
因为if 中的set xxx存在变量延时,打开了延迟开关,用“!”取代了"%"
VBS部分,把vbs取名linkexe.vbs和批处理放在一起。
  1. dim fso, WorkingPath, linkfile, linkname, WorkingPath
  2. linkfile=wscript.arguments(0)
  3. linkname=wscript.arguments(1)
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. WorkingPath = fso.GetParentFolderName(linkfile)
  6. linkname = "\找到文件" & linkname & ".lnk" ''上次这里错了,忘了加扩展名了,这次编辑加上了
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. strDesktop = WshShell.SpecialFolders("Desktop")
  9. set oShellLink = WshShell.CreateShortcut(strDesktop & linkname)
  10. oShellLink.TargetPath = linkfile
  11. oShellLink.WorkingDirectory = WorkingPath
  12. oShellLink.Save
复制代码
回复

使用道具 举报

3#
发表于 2016-6-16 18:47:46 来自手机 | 只看该作者
你这样搜,建个快捷方式,会非常麻烦。这种批处理不建议使用,把第二段的VBS嵌入到for语句Do部分,把\aaa.lnk改成你要建的快捷名,把%~dp0A.exe  改成%%~a把我%~dp0改成%~dpa
回复

使用道具 举报

4#
发表于 2016-6-16 18:47:47 来自手机 | 只看该作者
你这样搜,建个快捷方式,会非常麻烦。这种批处理不建议使用,把第二段的VBS嵌入到for语句Do部分,把\aaa.lnk改成你要建的快捷名,把%~dp0A.exe  改成%%~a把我%~dp0改成%~dpa
回复

使用道具 举报

5#
发表于 2016-6-16 18:47:47 来自手机 | 只看该作者
你这样搜,建个快捷方式,会非常麻烦。这种批处理不建议使用,把第二段的VBS嵌入到for语句Do部分,把\aaa.lnk改成你要建的快捷名,把%~dp0A.exe  改成%%~a把我%~dp0改成%~dpa
回复

使用道具 举报

6#
发表于 2016-6-16 18:48:00 来自手机 | 只看该作者
你这样搜,建个快捷方式,会非常麻烦。这种批处理不建议使用,把第二段的VBS嵌入到for语句Do部分,把\aaa.lnk改成你要建的快捷名,把%~dp0A.exe  改成%%~a把我%~dp0改成%~dpa
回复

使用道具 举报

7#
发表于 2016-6-16 18:48:06 来自手机 | 只看该作者
你这样搜,建个快捷方式,会非常麻烦。这种批处理不建议使用,把第二段的VBS嵌入到for语句Do部分,把\aaa.lnk改成你要建的快捷名,把%~dp0A.exe  改成%%~a把我%~dp0改成%~dpa
回复

使用道具 举报

8#
发表于 2016-6-16 18:49:50 来自手机 | 只看该作者
我了去,无忧刷新这么慢,点几下就一堆
回复

使用道具 举报

9#
发表于 2016-6-16 18:52:07 来自手机 | 只看该作者
就是啊这也太复杂了,建快捷方式别用vbs,用shortcut程序配合下。
回复

使用道具 举报

10#
发表于 2016-6-17 14:55:00 | 只看该作者
你这样有个问题,找到重复的文件怎么办??

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for %%i in (w v u t s r q p o n m l k j i h g f e d c) do for /f "delims=" %%a in ('dir /a-d /b /s %%i:\A.exe 2^>nul') do (
  4. if exist %%a set linkpath=%%a
  5. call :link
  6. )



  7. :link
  8. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\AAAAA.lnk""):b.TargetPath=""!linkpath!"":b.WorkingDirectory=""%~dp0"":b.Save:close")
  9. pause
  10. goto :eof
复制代码

点评

谢谢·~~~~~  详情 回复 发表于 2016-6-21 10:34
谢谢·~~~~~  详情 回复 发表于 2016-6-21 10:34
目测你这脚本,解决搜到重复文件,只需要再在加以个序数作为变量,序数在if里面加1,把"\aaaa.lnk"改为"aaaa!序数!.lnk" mshta能识别引号中的变量吗,我没有试过mshta,我看你mshta里面直接使用!linkpath!,那"aa  详情 回复 发表于 2016-6-18 16:30
回复

使用道具 举报

11#
发表于 2016-6-18 09:47:33 来自手机 | 只看该作者
楼主做什么用?会有这么奇怪的需求?
回复

使用道具 举报

12#
发表于 2016-6-18 16:30:36 | 只看该作者
wjgyz740526 发表于 2016-6-17 14:55
你这样有个问题,找到重复的文件怎么办??


目测你这脚本,解决搜到重复文件,只需要再在加以个序数作为变量,序数在if里面加1,把"\aaaa.lnk"改为"aaaa!序数!.lnk"
mshta能识别引号中的变量吗,我没有试过mshta,我看你mshta里面直接使用!linkpath!,那"aaaa!序数!.lnk"应该是能用的吧

点评

你问 这种问题,说明你对批处理的了解比较有限.. 不是 mshta 识别变量,而是批处理在要执行某一行之前已经把变量给预先解释了. 这个预先解析有时会产生麻烦,所以有时要用到变量延迟扩展.  详情 回复 发表于 2016-6-20 18:32
回复

使用道具 举报

13#
发表于 2016-6-19 16:41:30 来自手机 | 只看该作者
快捷方式加序号当然可以,要看楼主什么意图
回复

使用道具 举报

14#
发表于 2016-6-19 20:18:09 | 只看该作者
向楼主致敬












[qq]1793098339[/qq] 有需要办仿真证件 刻章的加我QQ1793098339
回复

使用道具 举报

15#
发表于 2016-6-20 02:13:03 | 只看该作者
  1. @echo off
  2. rem 自动请求以管理员权限运行
  3. echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
  4. reg query HKU\S-1-5-20>nul 2>nul||cscript //b "%temp%\getadmin.vbs"&&del "%temp%\getadmin.vbs" /f /q>nul 2>nul&&exit /b
  5. pushd %~dp0\
  6. setlocal enabledelayedexpansion
  7. set n=1
  8. echo 处理中,请稍后. . .
  9. echo.
  10. echo.
  11. for /f "tokens=2*" %%a in ('fsutil fsinfo drives') do set "alldrives=%%a %%b"
  12. for /d %%c in (%alldrives%) do (
  13.         for /f "delims=" %%d in ('if exist %%c dir /a /b /s %%cA.exe 2^>nul') do (
  14.                 set /a n+=1
  15.                 if exist "%%d" mklink "%userprofile%\desktop\%%~nd_!n!.exe" "%%d"
  16.         )
  17.        
  18. )
  19. echo.
  20. echo.
  21. set /p =处理完毕!<nul
  22. pause
复制代码
回复

使用道具 举报

16#
发表于 2016-6-20 08:15:59 来自手机 | 只看该作者
游戏菜单,搜集游戏快捷方式?任何应用的目录里都不止一个exe,快捷方式最好以文件夹为名字,如果确实是游戏菜单的话。
回复

使用道具 举报

17#
发表于 2016-6-20 18:28:44 | 只看该作者
你这种简单的操作用不着批处理...
用windows的自带搜索

WIN+E  >  CTRL+F  > 输入: a.exe 回车 > 全选 CTRL+A  > 按住ALT拖拽到桌面即可.
回复

使用道具 举报

18#
发表于 2016-6-20 18:32:04 | 只看该作者
pogua007 发表于 2016-6-18 16:30
目测你这脚本,解决搜到重复文件,只需要再在加以个序数作为变量,序数在if里面加1,把"\aaaa.lnk"改为 ...

你问 这种问题,说明你对批处理的了解比较有限..

不是 mshta 识别变量,而是批处理在要执行某一行之前已经把变量给预先解释了.

这个预先解析有时会产生麻烦,所以有时要用到变量延迟扩展.
回复

使用道具 举报

19#
 楼主| 发表于 2016-6-21 10:34:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

20#
 楼主| 发表于 2016-6-21 10:34:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 05:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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