タグ
  ANSI (1)
  ASP.NET (10)
  Active Directory (55)
  BAT (16)
  Backup (2)
  CSharp (11)
  CentOS (4)
  C言語 (4)
  DNS (4)
  Excel (3)
  FFmpeg (1)
  Fedora (4)
  FreeBSD (6)
  IPv6 (3)
  Java (11)
  JavaScript (8)
  LAN (1)
  Link (4)
  Linux (15)
  Mac (1)
  Mail (2)
  Microsoft (3)
  NIS (1)
  Node.js (6)
  OpenIndiana (1)
  OpenLDAP (2)
  OpenSSL (1)
  OpenSolaris (4)
  PHP (2)
  Perl (2)
  Postfix (1)
  PostgreSQL (2)
  PowerShell (34)
  RFC (3)
  SQL Server (5)
  Solaris (10)
  Ubuntu (9)
  VBScript (73)
  VCpp (2)
  VMware (3)
  Visual Basic (1)
  WMI (17)
  WSF (5)
  WSH (10)
  Windows (19)
  bash (1)
  bind (1)
  iSCSI (1)
  おまけ (3)
  作成中 (8)
  慣用句 (3)
  正規表現 (6)
  運用 (8)
作成 2010.02.25
更新 2010.02.25
BAT ファイルで変数に特定の文字列が含まれているか確認する
既知の問題
" があると失敗します。
入力される文字列に " がある可能性があるなら、置換するコードをさらに記述する必要があります。
つーか、VBScript か JavaScript を使った方が簡単です。
コード1
検査対象 %VAR1% ~ %VAR4% に %SERCHTEXT% が含まれるか確認し、結果を ERRORLEVEL で取得します。
@ECHO OFF
@REM テストする変数
SET VAR1=01234567890
SET VAR2=test4567890
SET VAR3=012test7890
SET VAR4=0123456test

@REM 検索対象
SET SEARCHTEXT="test"

ECHO %VAR1% | find %SEARCHTEXT% >NUL
IF NOT ERRORLEVEL 1 (ECHO %VAR1% TRUE) ELSE (ECHO %VAR1% FALSE)
ECHO %VAR2% | find %SEARCHTEXT% >NUL
IF NOT ERRORLEVEL 1 (ECHO %VAR2% TRUE) ELSE (ECHO %VAR2% FALSE)
ECHO %VAR3% | find %SEARCHTEXT% >NUL
IF NOT ERRORLEVEL 1 (ECHO %VAR3% TRUE) ELSE (ECHO %VAR3% FALSE)
ECHO %VAR4% | find %SEARCHTEXT% >NUL
IF NOT ERRORLEVEL 1 (ECHO %VAR4% TRUE) ELSE (ECHO %VAR4% FALSE)
コード2
検査対象 %VAR1% ~ %VAR4% に %SERCHTEXT% が含まれるか確認し、結果を %RESULT% に格納しています。
せっかく作ったので。
@ECHO OFF
@REM テストする変数
SET VAR1=01234567890
SET VAR2=test4567890
SET VAR3=012test7890
SET VAR4=0123456test

@REM 検索対象
SET SERCHTEXT=test
@REM 検索対象の文字の長さ
SET SERCHLEN=4
@REM 検索結果 0:未検索 1:検索対象が含まれる -1:検索対象が含まれない
SET RESULT=0

CALL :STRCHECK %VAR1%
IF %RESULT%==1 (ECHO %VAR1% TRUE) ELSE (ECHO %VAR1% FALSE)

CALL :STRCHECK %VAR2%
IF %RESULT%==1 (ECHO %VAR2% TRUE) ELSE (ECHO %VAR2% FALSE)

CALL :STRCHECK %VAR3%
IF %RESULT%==1 (ECHO %VAR3% TRUE) ELSE (ECHO %VAR3% FALSE)

CALL :STRCHECK %VAR4%
IF %RESULT%==1 (ECHO %VAR4% TRUE) ELSE (ECHO %VAR4% FALSE)
EXIT /B

:STRCHECK
SET RESULT=0
CALL :INCHECK %1 -1
EXIT /B %RESULT%

:INCHECK
SET CHECKVAR=%1
SET /A CHECKPOINT=%2+1
CALL SET CHECKDATA=%%CHECKVAR:~%CHECKPOINT%,%SERCHLEN%%%
IF "%CHECKDATA%" EQU "%SERCHTEXT%" (
  SET RESULT=1
) ELSE (
  IF "%CHECKDATA%" EQU "" (
    SET RESULT=-1
  ) ELSE (
    CALL :INCHECK %CHECKVAR% %CHECKPOINT%
  )
)
EXIT /B %RESULT%
タグ: BAT
[リロード] [記事修正] [新規作成] [使用方法]
©2004-2012 UPKEN IPv4