我的
ffind.bat
是一个简单的脚本,通过简单的方法在整个电脑分区中搜索文件/目录:搜索命令dir "\*%toFind%*" /s
,使用for循环为每个分区运行一次。
问题:虽然我使用
@echo off
来抑制命令而不是它们的o/p,但批处理不断将其内容打印到终端,仅用看似最后一次迭代的值替换变量。并不断重新打印几次!
注意:此命令以前可以使用,但作为 cmder 别名,即(
doskey
)并且仅在一个驱动器内搜索驱动器现在在终端中,例如(c:)
别名:ffind=dir "\*$**" /s
ffind.bat
脚本:
@echo off
setlocal EnableDelayedExpansion
set oldpath=%cd%
set "toFind=%1"
set alphabet= !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
@for /L %%a in (65,1,90) do (
rem chr %%a > tmpFileChrBat.txt
rem set /p crntDrive= < tmpFileChrBat.txt
rem del tmpFileChrBat.txt
rem following 2 commands does almost what `chr.bat` was doing
set /a tmp=%%a - 32
set crntDrive=!alphabet:~!tmp!,1!
if exist !crntDrive!: (
cd /d !crntDrive!:
dir "\*%toFind%*" /s
)
)
cd /d %oldpath%
endlocal
而且我现在不会从这个批处理脚本中调用任何其他
.bat
来消除任何其他因素
现在停了!当我执行它并将参数传递给它时,它根本没有做任何事情