循环的批处理脚本中的字符串比较
问题描述:
我在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"
)
)
答
您已在行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"
)
)
使用扩展集语法避免你的尾随spaces.'set“TMP1 = %%的”'和'设置“VT1 = TMP1! :〜0,5“! '... – jeb
谢谢杰布 - 这将排序它 – DavScrim