无忧启动论坛
标题: 求一个批处理 [打印本页]
作者: 香国妙手 时间: 2023-10-22 19:20
标题: 求一个批处理
本帖最后由 香国妙手 于 2023-10-22 20:53 编辑
求一个批处理,要求如下:
运行批处理就自动搜索卷标为“八段锦”的优盘盘符,如果优盘盘符为“H”,则自动运行H:\123\abc.exe,如果优盘盘符为“K”,则自动运行K:\123\abc.exe。谢谢!
补充说明:我们只知道优盘卷标为“八段锦”,我们要通过卷标找到优盘盘符(可能是“D-Z”中的某一个),并运行优盘的123\abc.exe
作者: rbwrbw 时间: 2023-10-22 19:50
不难,问下度娘
作者: wszjf 时间: 2023-10-22 20:04
本帖最后由 wszjf 于 2023-10-22 20:10 编辑
- @echo off
- setlocal enabledelayedexpansion
- set targetLabel=八段锦
- set targetFile=123\abc.exe
- 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 (
- if exist %%d:\ (
- for /f "tokens=1-2 delims=:" %%a in ('fsutil volume diskfree %%d:\') do (
- set "label="
- for /f "usebackq tokens=2 delims==" %%c in (`wmic logicaldisk where DeviceID^="%%d:" get VolumeName /value`) do (
- set "label=%%c"
- )
- if "!label!"=="%targetLabel%" (
- echo 找到目标盘符: %%d:,正在运行 %targetFile%...
- pushd %%d:\
- call %targetFile%
- popd
- )
- )
- )
- )
- endlocal
复制代码该脚本会遍历所有盘符,搜索卷标为"八段锦"的优盘盘符,并自动运行该盘符下的123\abc.exe。
注意:如果存在多个满足条件的盘符,脚本会逐个运行它们下面的123\abc.exe文件。如果只要找到一个满足条件的盘符并运行对应的文件,可以在找到目标盘符后添加一个exit语句来终止脚本的执行。
作者: yyz2191958 时间: 2023-10-22 20:11
很给力!
作者: wjgyz740526 时间: 2023-10-22 20:21
如果除了优盘有目标文件,本地硬盘没有的话,其实可以忽略优盘盘符
作者: kkkssc 时间: 2023-10-22 20:36
@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
作者: 香国妙手 时间: 2023-10-22 20:42
感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,却没有显示“找到目标盘符”,也没有运行abc.exe就退出了。请求大侠再次协助,不胜感激!
作者: 香国妙手 时间: 2023-10-22 20:44
感谢大侠热情相助!但是,我另存为ANSI编码的bat文件双击后,没有达到预期目的。请求大侠再次协助,不胜感激!
作者: kkkssc 时间: 2023-10-22 20:46
本机亲测可以运行,其他不知道了,你直接复制改变上面盘符和程序名就可以了
作者: zjl3480 时间: 2023-10-22 20:58
@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
作者: zjl3480 时间: 2023-10-22 20:58
- @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
复制代码
作者: 香国妙手 时间: 2023-10-22 21:02
超级给力,万分感谢!
作者: rbwrbw 时间: 2023-10-22 21:04
good!!!
作者: Joe_Ye 时间: 2023-10-22 21:59
感谢分享
作者: yc2428 时间: 2023-10-22 23:00
感谢分享
作者: tanglf 时间: 2023-10-23 08:59
谢谢分享
作者: 51xp 时间: 2023-10-23 09:13
学习
作者: 咕哩咕噜 时间: 2023-10-23 16:06
经测试可用!
作者: yc2428 时间: 2023-10-23 16:51
学习了
作者: 2010linlance 时间: 2023-10-23 16:59
牛逼,你们都手写啊?
我得靠GPT,然后改改。。。
作者: rbwrbw 时间: 2023-10-23 18:09
高手如云
作者: nowayer 时间: 2023-11-17 02:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: keygen 时间: 2023-11-17 13:53
bingchat生成
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |