批处理文件findstr,如何?
batch file findstr, how to?
我正在写批处理文件:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
@REM Set defaults
SET BASE_FLDR=.\
SET BLD_TYPE=Release
@REM Check if base folder specified, if not default to current location
IF NOT [%1] == [] SET BASE_FLDR=%1
@REM Check if build type specified, if not default to Release
IF NOT [%2] == [] SET BLD_TYPE=%2
@REM Display parameters
ECHO Base folder: %BASE_FLDR%
ECHO Build type : %BLD_TYPE%
@REM Create list of subfolders to search
FOR /F "delims=" %%F IN ('DIR %BASE_FLDR% /S /B /A:D') DO (
ECHO [%%F] | FINDSTR /E /X /IC:"%BLD_TYPE%" [%%F] >NUL && (
ECHO %%F
)
)
我想要做的是能够像这样调用批处理文件:
copydlls ./ Release
我希望批处理文件使用命令行参数 1 (%1) 来指定起始位置,%2 可以是 "Debug" 或 "Release",这个参数解析没问题.
在循环中,我尝试使用 FINDSTR 查找以 %2 中提供的文件夹名称结尾的所有子文件夹。
这个位不正确,是我需要帮助的地方。
到目前为止,我的代码将正确捕获文件夹事件,其中文件夹包含 [] 修复的空格,但现在它与字符串的结尾不匹配。
而不是使用 if %errorlevel%
尝试 if !errorlevel!
,因为在分析块时会评估百分比扩展,然后再执行。
但这无济于事,因为您的代码已损坏。
Findstr /X
不能永远匹配,因为 /X
整行必须匹配不能仅对 BLD_TYPE
为真。
顺便说一句。可以通过将 findstr 移动到 FOR 循环中来简化它。
FOR /F "delims=" %%F IN ('"DIR %BASE_FLDR% /S /B /A:D | FINDSTR /E /IC:"%BLD_TYPE%" "') DO (
echo #1 %%F
)
我正在写批处理文件:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
@REM Set defaults
SET BASE_FLDR=.\
SET BLD_TYPE=Release
@REM Check if base folder specified, if not default to current location
IF NOT [%1] == [] SET BASE_FLDR=%1
@REM Check if build type specified, if not default to Release
IF NOT [%2] == [] SET BLD_TYPE=%2
@REM Display parameters
ECHO Base folder: %BASE_FLDR%
ECHO Build type : %BLD_TYPE%
@REM Create list of subfolders to search
FOR /F "delims=" %%F IN ('DIR %BASE_FLDR% /S /B /A:D') DO (
ECHO [%%F] | FINDSTR /E /X /IC:"%BLD_TYPE%" [%%F] >NUL && (
ECHO %%F
)
)
我想要做的是能够像这样调用批处理文件:
copydlls ./ Release
我希望批处理文件使用命令行参数 1 (%1) 来指定起始位置,%2 可以是 "Debug" 或 "Release",这个参数解析没问题.
在循环中,我尝试使用 FINDSTR 查找以 %2 中提供的文件夹名称结尾的所有子文件夹。
这个位不正确,是我需要帮助的地方。
到目前为止,我的代码将正确捕获文件夹事件,其中文件夹包含 [] 修复的空格,但现在它与字符串的结尾不匹配。
而不是使用 if %errorlevel%
尝试 if !errorlevel!
,因为在分析块时会评估百分比扩展,然后再执行。
但这无济于事,因为您的代码已损坏。
Findstr /X
不能永远匹配,因为 /X
整行必须匹配不能仅对 BLD_TYPE
为真。
顺便说一句。可以通过将 findstr 移动到 FOR 循环中来简化它。
FOR /F "delims=" %%F IN ('"DIR %BASE_FLDR% /S /B /A:D | FINDSTR /E /IC:"%BLD_TYPE%" "') DO (
echo #1 %%F
)