循环的批处理脚本中的字符串比较

时间:2015-11-05 10:28:43

标签: string batch-file for-loop

我在for循环中遇到了一个简单的批处理程序问题。

基本上,如果文件名以' LOTTR'开头,程序应该适用于文件夹中的每个文件。它应该将文件复制到位置Y:\ ELCWork1-Rus。如果没有那么它应该被复制到Y:\ ELCWork2-Oth。我已经使用了2个if而不是if..else用于未来的子字符串比较......

我需要将评估的子字符串与固定值进行比较。 在下面的代码中 - 逻辑始终无法匹配。我尝试使用和不使用双引号,并在for循环内外设置变量。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set %c=LOTTR
for %%s in (*.csv) do ( 
   set tmp1=%%s 
   set vt1=!tmp1:~0,5! 
   set vt2=!tmp1:~0,55! 
   set "cmv=LOTTR"
   echo !tmp1:~0,10! 
   echo !vt1!
   echo %%c
   if /I "!vt1!"=="LOTTR" (
       echo "Matches"
       Xcopy !tmp1! "Y:\ELCWork1-Rus"
       )
   if /I NOT "!vt1!"=="LOTTR" (
       echo "No Match"
       Xcopy !tmp1! "Y:\ELCWork2-Oth"
       )

)

1 个答案:

答案 0 :(得分:0)

您在行set vt1=!tmp1:~0,5!后面添加了一个空格。字符串成为" LOTTR"如果文件以" LOTTR":

开头
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%s in (*.csv) do ( 
    set tmp1=%%s 
    set vt1=!tmp1:~0,5!
    if /I "!vt1!"=="LOTTR" (
        echo "Matches"
        Xcopy !tmp1! "Y:\ELCWork1-Rus"
        )
    if /I NOT "!vt1!"=="LOTTR" (
        echo "No Match"
        Xcopy !tmp1! "Y:\ELCWork2-Oth"
        )
    )