【发布时间】:2015-11-05 10:28:43
【问题描述】:
我在 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 "tmp1=%%s"和set "vt1=!tmp1:~0,5!"... -
谢谢 Jeb - 这样就搞定了
标签: string batch-file for-loop