无忧启动论坛

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

[求助] 求一个批处理

[复制链接]
跳转到指定楼层
1#
发表于 2023-10-22 19:20:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 香国妙手 于 2023-10-22 20:53 编辑

求一个批处理,要求如下:
运行批处理就自动搜索卷标为“八段锦”的优盘盘符,如果优盘盘符为“H”,则自动运行H:\123\abc.exe,如果优盘盘符为“K”,则自动运行K:\123\abc.exe。谢谢!
补充说明:我们只知道优盘卷标为“八段锦”,我们要通过卷标找到优盘盘符(可能是“D-Z”中的某一个),并运行优盘的123\abc.exe




2#
发表于 2023-10-22 19:50:33 | 只看该作者
不难,问下度娘
回复

使用道具 举报

3#
发表于 2023-10-22 20:04:48 | 只看该作者
本帖最后由 wszjf 于 2023-10-22 20:10 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. set targetLabel=八段锦
  4. set targetFile=123\abc.exe

  5. for %%d in (A B 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 (
  6.     if exist %%d:\ (
  7.         for /f "tokens=1-2 delims=:" %%a in ('fsutil volume diskfree %%d:\') do (
  8.             set "label="
  9.             for /f "usebackq tokens=2 delims==" %%c in (`wmic logicaldisk where DeviceID^="%%d:" get VolumeName /value`) do (
  10.                 set "label=%%c"
  11.             )
  12.             if "!label!"=="%targetLabel%" (
  13.                 echo 找到目标盘符: %%d:,正在运行 %targetFile%...
  14.                 pushd %%d:\
  15.                 call %targetFile%
  16.                 popd
  17.             )
  18.         )
  19.     )
  20. )

  21. endlocal
复制代码
该脚本会遍历所有盘符,搜索卷标为"八段锦"的优盘盘符,并自动运行该盘符下的123\abc.exe。
注意:如果存在多个满足条件的盘符,脚本会逐个运行它们下面的123\abc.exe文件。如果只要找到一个满足条件的盘符并运行对应的文件,可以在找到目标盘符后添加一个exit语句来终止脚本的执行。

点评

这个代码好,作者基本上掌握了dos 代码的精随  发表于 2023-10-23 09:40
感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,却没有显示“找到目标盘符”,也没有运行abc.exe就退出了。请求大侠再次协助,不胜感激!  详情 回复 发表于 2023-10-22 20:42
很给力!  详情 回复 发表于 2023-10-22 20:11

评分

参与人数 1无忧币 +1 收起 理由
yyz2191958 + 1 很给力!

查看全部评分

回复

使用道具 举报

4#
发表于 2023-10-22 20:11:30 | 只看该作者
wszjf 发表于 2023-10-22 20:04
该脚本会遍历所有盘符,搜索卷标为"八段锦"的优盘盘符,并自动运行该盘符下的123\abc.exe。注 ...

很给力!
回复

使用道具 举报

5#
发表于 2023-10-22 20:21:55 来自手机 | 只看该作者
如果除了优盘有目标文件,本地硬盘没有的话,其实可以忽略优盘盘符
回复

使用道具 举报

6#
发表于 2023-10-22 20:36:27 | 只看该作者
@echo off
chcp 936
set pg=123\abc.exe
set pf=八段锦
for %%i 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 (set p=%%i&&call :ch)
echo 没找到对应程序&exit
:ch
echo %p%:
if not exist %p%: goto :bk
for /f "tokens=4 delims= " %%a in ('vol %p%: ^|find /i "%pf%"') do (set pt=%%a)
if 1%pt%==1%pf% (call "%p%:\%pg%" &&exit)
:bk
exit /b

点评

感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,没有达到预期目的。请求大侠再次协助,不胜感激!  详情 回复 发表于 2023-10-22 20:44
回复

使用道具 举报

7#
 楼主| 发表于 2023-10-22 20:42:04 | 只看该作者
wszjf 发表于 2023-10-22 20:04
该脚本会遍历所有盘符,搜索卷标为"八段锦"的优盘盘符,并自动运行该盘符下的123\abc.exe。注 ...

感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,却没有显示“找到目标盘符”,也没有运行abc.exe就退出了。请求大侠再次协助,不胜感激!
回复

使用道具 举报

8#
 楼主| 发表于 2023-10-22 20:44:40 | 只看该作者
kkkssc 发表于 2023-10-22 20:36
@echo off
chcp 936
set pg=123\abc.exe

感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,没有达到预期目的。请求大侠再次协助,不胜感激!

点评

本机亲测可以运行,其他不知道了,你直接复制改变上面盘符和程序名就可以了  详情 回复 发表于 2023-10-22 20:46
回复

使用道具 举报

9#
发表于 2023-10-22 20:46:29 | 只看该作者
香国妙手 发表于 2023-10-22 20:44
感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,没有达到预期目的。请求大侠再次协助,不胜 ...

本机亲测可以运行,其他不知道了,你直接复制改变上面盘符和程序名就可以了
回复

使用道具 举报

10#
发表于 2023-10-22 20:58:10 | 只看该作者
@echo off setlocal enabledelayedexpansion  set "volume_label=八段锦" set "executable=abc.exe"  for /f "usebackq tokens=1,2" %%a in (`wmic logicaldisk where "drivetype=2" get caption^, volumename ^| findstr /i "%volume_label%"`) do (     set "drive_letter=%%a"     set "volume_name=%%b"      rem Remove trailing spaces from volume name     for /l %%i in (1,1,30) do if "!volume_name:~-1!"==" " set "volume_name=!volume_name:~0,-1!" )  if defined drive_letter (     set "path=!drive_letter!\123\%executable%"     if exist "!path!" (         echo Running !path!         "!path!"     ) else (         echo File not found: !path!     ) ) else (     echo Specified volume label not found. )  endlocal
回复

使用道具 举报

11#
发表于 2023-10-22 20:58:32 | 只看该作者
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. set "volume_label=八段锦"
  4. set "executable=abc.exe"

  5. for /f "usebackq tokens=1,2" %%a in (`wmic logicaldisk where "drivetype=2" get caption^, volumename ^| findstr /i "%volume_label%"`) do (
  6.     set "drive_letter=%%a"
  7.     set "volume_name=%%b"

  8.     rem Remove trailing spaces from volume name
  9.     for /l %%i in (1,1,30) do if "!volume_name:~-1!"==" " set "volume_name=!volume_name:~0,-1!"
  10. )

  11. if defined drive_letter (
  12.     set "path=!drive_letter!\123\%executable%"
  13.     if exist "!path!" (
  14.         echo Running !path!
  15.         "!path!"
  16.     ) else (
  17.         echo File not found: !path!
  18.     )
  19. ) else (
  20.     echo Specified volume label not found.
  21. )

  22. endlocal
复制代码

点评

超级给力,万分感谢!  详情 回复 发表于 2023-10-22 21:02
回复

使用道具 举报

12#
 楼主| 发表于 2023-10-22 21:02:18 | 只看该作者

超级给力,万分感谢!
回复

使用道具 举报

13#
发表于 2023-10-22 21:04:46 | 只看该作者
good!!!
回复

使用道具 举报

14#
发表于 2023-10-22 21:59:37 | 只看该作者
感谢分享
回复

使用道具 举报

15#
发表于 2023-10-22 23:00:53 | 只看该作者
感谢分享
回复

使用道具 举报

16#
发表于 2023-10-23 08:59:28 | 只看该作者
谢谢分享
回复

使用道具 举报

17#
发表于 2023-10-23 09:13:08 | 只看该作者
学习
回复

使用道具 举报

18#
发表于 2023-10-23 16:06:44 | 只看该作者
经测试可用!
回复

使用道具 举报

19#
发表于 2023-10-23 16:51:18 | 只看该作者
学习了
回复

使用道具 举报

20#
发表于 2023-10-23 16:59:02 | 只看该作者
牛逼,你们都手写啊?

我得靠GPT,然后改改。。。
回复

使用道具 举报

21#
发表于 2023-10-23 18:09:18 | 只看该作者
高手如云
回复

使用道具 举报

22#
发表于 2023-11-17 02:33:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

23#
发表于 2023-11-17 13:53:32 | 只看该作者

bingchat生成
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-22 00:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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