批处理您可以将findstr与if语句一起使用

时间:2016-08-10 02:41:44

标签: batch-file if-statement uppercase findstr errorlevel

我正在尝试测试字符串是否为大写。我知道这有效:

@echo off
setlocal enabledelayedexpansion

set X=A
set Y=a

echo !X!|findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$"
echo !errorlevel!
echo !Y!|findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$"
echo !errorlevel!

如果errorlevel不是大写,则结果为echo,但我想知道它是否为if部分的大写,例如使用findstr声明。但是我不知道如何使用errorlevel并传递一个变量进行测试,因此可以使用if来生成<div id="DivImgHolderFloat1"> <img id="ImgFloat1" src="img/banner/Banner-1-float.png"> </div> <div id="DivImgHolderFloat2"> <img id="ImgFloat2" src="img/banner/Banner-2-float.png"> </div> <div id="DivImgHolderFloat3"> <img id="ImgFloat3" src="img/banner/Banner-3-float.png"> </div> 我可以在#DivImgHolderFloat1{ position: relative; width: 350px; border: 1px solid red; float: right; margin-right: 620px; margin-top: 85px; opacity: 0; } #ImgFloat1{ width: 100%; } #DivImgHolderFloat2{ position: relative; width: 250px; border: 1px solid red; float: left; margin-left: 400px; margin-top: 85px; opacity: 0; } #ImgFloat2{ width: 100%; } #DivImgHolderFloat3{ position: relative; width: 1000px; border: 1px solid red; float: left; margin-left: 230px; opacity: 0; } #ImgFloat3{ width: 100%; } 语句中进行测试。

2 个答案:

答案 0 :(得分:3)

您需要ECHO,但您不需要测试ERRORLEVEL。您可以使用&&来测试前面的命令是否失败,或||来测试它是否失败。您也可以将FINDSTR重定向到nul,因为您不需要查看输出。

@echo off
setlocal enabledelayedexpansion

set X=A
set Y=a

for %%V in (X Y) do echo(!%%V!|findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$" >nul && (
  echo !%%V! is all upper case
) || (
  echo !%%V! is not all upper case
)

所有东西都可以放在一行,但为了便于阅读,我使用括号和多行。

答案 1 :(得分:0)

@echo off
setlocal enabledelayedexpansion

rem this bat only validates one character.

set Y=a

for /f "delims=" %%i in ('echo !Y!^|findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$"') do set output=%%i

if [%output%]==[] (echo !Y! is lower case) else (echo !Y! is upper case)

rem Expected output: a is lower case

因为它正在使用findstr。

findstr/?
Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

如果未创建包含[a-z]的新文本文件,则ECHO部分可能是不可避免的。 我稍微修改了代码,以避免回显不必要的信息。