使用变量的字符串比较总是为false(在批处理中)

时间:2015-08-27 18:01:39

标签: parsing batch-file for-loop trim

在我当前的文件夹中,我有一个名为backup(yyyy-mm-dd).7z的文件 我需要保留length变量,即使它是常量。

@echo off
setlocal EnableDelayedExpansion

set "a=.\backup"
set "b=yyyy-mm-dd"
set "length=19"

for %%f in (.\*) do (

    set "fullpath=%%f"
    set "trimpath=!fullpath:~0,%length%!"

    set trimpath
    echo trimpath=%trimpath%

    if %trimpath% == %a%(%b% echo this is equal
)

我对该代码有2个问题:

  1. 为什么在拨打set trimpath而不是直接使用%trimpath%时,我能看到trimpath的价值?
  2. 为什么我的病情是假的?我该怎么做才能成功?

1 个答案:

答案 0 :(得分:0)

以下是关注@foxidrive和@JosefZ建议后的解决方案!

@echo off
setlocal EnableDelayedExpansion

set "a=.\backup"
set "b=yyyy-mm-dd"
set "length=19"

for %%f in (.\*) do (

    set "fullpath=%%f"
    set "trimpath=!fullpath:~0,%length%!"

    echo trimpath=!trimpath!

    if "!trimpath!" == "%a%(%b%" echo this is equal
)

如果您需要测试解决方案,只需在当前文件夹中创建一个名为backup(yyyy-mm-dd)的文件。