String 在批处理文件中,如何验证文件名的一部分与给定字符串匹配?

String 在批处理文件中,如何验证文件名的一部分与给定字符串匹配?,string,batch-file,command-line,cmd,String,Batch File,Command Line,Cmd,我有一个目录,其中充满了如下所示的文件: Codian1_OCT_14_2014_14_52_ccc145b1_WMV.asf Codian1_OCT_14_2014_14_52_ccc145b1_ASF.asf Codian1_OCT_13_2014_12_52_ccc145b1_WMV.asf Codian1_OCT_13_2014_12_52_ccc145b1_ASF.asf 我试图测试文件是否以WMV.asf或asf.asf结尾。由于某些原因,以下代码不起作用: FOR %%i IN

我有一个目录,其中充满了如下所示的文件:

Codian1_OCT_14_2014_14_52_ccc145b1_WMV.asf
Codian1_OCT_14_2014_14_52_ccc145b1_ASF.asf
Codian1_OCT_13_2014_12_52_ccc145b1_WMV.asf
Codian1_OCT_13_2014_12_52_ccc145b1_ASF.asf
我试图测试文件是否以WMV.asf或asf.asf结尾。由于某些原因,以下代码不起作用:

FOR %%i IN (*) DO (IF %%~i=="*WMV.asf" (echo %%~i IS wmv.asf) ELSE (echo %%~i isn't wmv.asf))
你知道怎么做吗?

一种方法:

@echo off
setlocal enabledelayedexpansion
FOR %%i IN (*) DO (
 set $File=%%i
 if /i !$File:~-7!==WMV.asf echo !$File! -^> WMV
 if /i !$File:~-7!==ASF.asf echo !$File! -^> ASF)

所有比较都不区分大小写,因为Windows不关心文件路径中的大小写

选择1

@echo off
setlocal enableDelayedExpansion
for %%i in (*) do (
  set "file=%%i"
  if /i "!file:~-7!"=="wmv.asf" (echo %%i IS wmv.asf) else (echo %%i isn't wmv.asdf)
)
选择2

for %%i in (*) do echo %%i|findstr /ile "wmv.asf" >nul && (echo %%i IS wmv.asf) || (echo %%i isn't wmv.asf)