|
本帖最后由 chiannet 于 2018-1-16 16:28 编辑
@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"
|
|