将输出与字符串进行比较

时间:2015-09-22 04:38:27

标签: windows loops batch-file cmd

在这里需要一点帮助,请稍微完成我的剧本,但似乎无法想出最后一篇文章。

背景

我需要将命令输出\\%%A\%B与预设的"排除列表进行比较"比较该进程是否已在其他脚本上运行。 我有一个文件存储有复制错误的文件位置的日志。解析此日志文件,并将所有文件位置(动态)存储到%%A%%B中。排除列表说明哪些文件已根据已知问题手动复制。此脚本需要跳过这些文件并复制其余文件。

要求:

我需要将%% A \ %% B的结果与\ root \ path进行比较,看看字符串是否匹配(在文件之前)。如果确实如此,我需要标记它。

代码:

这是我到目前为止所做的:

cd C:\logs
for /f "tokens=2* delims=\" %%A in (err.log) do (
    if not \\%%A\%%B==%BACKUPDIR% (
        if not \\%%A\%%B==%TEMPLATEPATH%\* (        
            for %%I in %PSTNAMES% do (
                if not "\\%%A\%%B"=="%NASDIR%\%%I PST\"* (
                    echo %NASDIR%\%%I PST\*
                    @echo \\%%A\%%B
                ) else (
                    echo false
                )
            )
        )
    )

这可以让您了解需要发生什么 我也在尝试使用比较代码:

If NOT "%somepath%"=="%somepath:some_exclusion=%" (
    echo continue
) else (
    echo don't continue
)

EXTRA:

现在第一组代码可以工作,如果我只是要使用的路径,但因为它包含文件名,比较不匹配。 所以为了实现这个目标,我想有两种途径。

  1. 尝试获取"%somepath%"=="%somepath:some_exclusion=%"正常工作
  2. 尝试剥离文件名
  3. 我遇到的问题是:

    1. %somepath%无法工作,因为我似乎无法将%%A存储为%var%等变量
    2. 我似乎无法在文件名前停止路径名称。
    3. 请帮忙

1 个答案:

答案 0 :(得分:1)

如果您尝试将通配符与if一起使用:这将无效。

但不是

if mouse==mouse*

你可以使用

echo mousetail | find "mouse" && echo yes || echo no

(仅显示基本原则; findstr有一些有用的功能,如“字符串开头”:findstr "^mouse" - see findstr /?`更多信息)