2015-11-05 159 views
1

我在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" 
     ) 

) 
+3

使用扩展集语法避免你的尾随spaces.'set“TMP1 = %%的”'和'设置“VT1 = TMP1! :〜0,5“! '... – jeb

+0

谢谢杰布 - 这将排序它 – DavScrim

回答

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" 
     ) 
    ) 
+0

优秀 - 删除所有的尾随空间来回所有loines,它现在完美 - 现在感谢乔恩 – DavScrim

+0

@DavScrim,如果这个答案解决了你的问题,请考虑接受它.. 。 – aschipfl