无忧启动论坛

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

[求助] 搜索某一bat并运行的批处理命令该如何写?

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-11 10:58:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
        从C——Z搜索X文件夹里面的Y.bat,搜索到后并运行它:

@echo off
rem 指定待搜索的文件
set "FileName=\X\Y.bat"   
echo 正在搜索,请稍候...
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 (
  if exist %%a:\ (
    for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
      if /i "%%~nxb" equ "%FileName%" (
        echo,%%b
      )
    )
  )
)
call "%FileName%"

        此批处理除了在X文件夹所在的分区运行可以成功执行外,在其它分区都无法成功执行,不知道问题出在哪儿了。
推荐
发表于 2018-1-11 13:57:14 | 只看该作者
本帖最后由 chiannet 于 2018-1-16 16:28 编辑
captain_g 发表于 2018-1-11 12:53
如果只是搜索某特定批处理并运行之,何不简单粗暴:

for %%a in (C D E F G H I J K L M N O P Q R S T  ...






@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION
TITLE 正在处理   %~N0 ......







SET "FILENAME=X\Y.CMD"
REM X、Y为符合windows合法文件目录名的“字符串”,可以包含字母、数字、空格等符号。










SET "T=%~1"
IF DEFINED T IF /I !T:~-4!==.CMD SET "FILENAME=%~1"
FOR /L %%J IN (0,1,1000) DO IF "!FILENAME:~%%J,1!"=="" (SET SL1=%%J&&GOTO :SL1)
:SL1
IF %SL1% LSS 2 GOTO :ER
SET /A SL11=%SL1%+1
FOR /D %%I IN ("%FILENAME%") DO SET "FN=%%~NXI"
FOR /L %%I IN (0,1,1000) DO IF "!FN:~%%I,1!"=="" (SET SL2=%%I&&SET /A SL2=%SL1%-!SL2!-1
IF !SL2! GTR 0 GOTO :BEG ELSE GOTO :ER)
CLS
:ER
ECHO.&ECHO.&ECHO.& ECHO 所提供的“%FILENAME%”对本批处理无效!&&GOTO :END
:BEG
ECHO.
ECHO.
ECHO 正在搜索并执行“!FILENAME:~0,%SL2%!”目录下的“%FN%”,请稍候...
SET /A S=0
FOR %%J 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 (IF EXIST %%J:\ (FOR /F "DELIMS=" %%I IN ('DIR /A-D /S /B "%%J:\%FN%" 2^>NUL') DO (SET "T=%%I"
IF /I "!T:~-%SL1%!"=="%FILENAME%" (IF /I "!T:~-%SL11%,1!"=="\" (ECHO 正在执行“!T!”...........&&SET /A S=!S!+1&&CALL "!T!")))))
CLS
ECHO.
IF %S% GTR 0 (ECHO 共计找到并执行“%FILENAME%”%S%次!) ELSE (ECHO 徒劳无功。)
:END
ECHO.
ECHO.
PAUSE


形如

"c:\X\Y.CMD"
“c:\疼\人头疼\让头 疼\让                         人头 疼\X\Y.CMD"
“T:\让人头疼\让人头疼\让人头疼\让人头疼\让人头 疼\让人头 疼\X\Y.CMD"
“K:\疼\人头疼\让头 疼\让                         人头 疼\X\Y.CMD"

都执行。



20180116修正了一下,能避免执行以X为结尾目录下的“Y.cmd”
"c:\xX\Y.CMD"
"t:\33333333333333333333333334               4\wwwwwwwwwwwyX\Y.CMD"


回复

使用道具 举报

14#
发表于 2018-1-26 21:10:57 | 只看该作者
很久不用,早忘了

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

13#
发表于 2018-1-25 21:30:07 | 只看该作者
路过学习
回复

使用道具 举报

12#
发表于 2018-1-12 11:44:52 | 只看该作者
set "FileName=\X\Y.bat"   这句话已经定义了只搜索“这个路径下的这个bat”而不是“这个bat”,要注意活学活用~~
前几楼的回复都不错,你看看学习学习...
回复

使用道具 举报

11#
发表于 2018-1-11 21:27:52 | 只看该作者
captain_g 发表于 2018-1-11 15:23
既然是有目的地搜特定的东西,路径、文件名都就搞特定一点;

全盘搜,不现实,批处理也很费时。

费时??  知道一键Ghost安装系统的时候  调用的DOS模块怎么实现一键Ghost的吗 就是全盘搜索特定文件
回复

使用道具 举报

10#
发表于 2018-1-11 18:22:03 | 只看该作者
captain_g 发表于 2018-1-11 15:23
既然是有目的地搜特定的东西,路径、文件名都就搞特定一点;

全盘搜,不现实,批处理也很费时。

确实,通常相对路径是固定的,楼主发帖要这么搞,代码就只能变复杂,效率绝对地往低下走咯。
回复

使用道具 举报

9#
发表于 2018-1-11 18:09:25 | 只看该作者
楼上都是高手 我路过学习下







    神奇的小尾巴:Mozilla/5.0 (Wayland; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0  (zh-CN)
    ——2018/1/11 下午6:09:26
             
    回复

    使用道具 举报

    8#
    发表于 2018-1-11 16:07:20 | 只看该作者
    set "FileName=Y.bat"  指定文件
    回复

    使用道具 举报

    7#
    发表于 2018-1-11 15:23:22 | 只看该作者
    既然是有目的地搜特定的东西,路径、文件名都就搞特定一点;

    全盘搜,不现实,批处理也很费时。

    点评

    费时?? 知道一键Ghost安装系统的时候 调用的DOS模块怎么实现一键Ghost的吗 就是全盘搜索特定文件  详情 回复 发表于 2018-1-11 21:27
    确实,通常相对路径是固定的,楼主发帖要这么搞,代码就只能变复杂,效率绝对地往低下走咯。  详情 回复 发表于 2018-1-11 18:22
    回复

    使用道具 举报

    6#
    发表于 2018-1-11 15:23:05 | 只看该作者
    @ECHO OFF
    for %%b 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 if exist %%b:\xx.cmd set sc=%%b:
    if "%sc%"=="" goto menu
    call xx.cmd

    :menu
    回复

    使用道具 举报

    5#
    发表于 2018-1-11 15:13:20 | 只看该作者
    本帖最后由 captain_g 于 2018-1-11 15:16 编辑

    没说清楚,我的意思

    set "FileName=\X\Y.bat"   

    ...

    都不用
    回复

    使用道具 举报

    3#
    发表于 2018-1-11 12:53:12 | 只看该作者
    如果只是搜索某特定批处理并运行之,何不简单粗暴:

    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  if exist %%a:\X\Y.BAT call %%a:\X\Y.BAT

    点评

    形如 "c:\X\Y.CMD" “T:\让人头疼\让人头疼\让人头疼\让人头疼\让人头 疼\让人头 疼\X\Y.CMD" “K:\疼\人头疼\让头 疼\让 人头 疼\X\Y.CMD" 都执行  详情 回复 发表于 2018-1-11 13:57
    回复

    使用道具 举报

    2#
    发表于 2018-1-11 12:32:36 | 只看该作者
    仅看最后一行,不要管当中用了那么复杂的东西,call "%FileName%"!

    就知道,你只能运行该【批处理】所在分区中被指定为%FileName%!

    在你的示例中%FileName%始终都是\X\Y.bat!

    如果批处理文件所在分区没有\X\Y.bat,批处理就结束、退出了。
    回复

    使用道具 举报

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

    本版积分规则

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

    闽公网安备 35020302032614号

    GMT+8, 2024-11-27 13:17

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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