【发布时间】:2015-09-22 04:38:27
【问题描述】:
在这里需要更多帮助,我距离完成我的脚本还有一点点路要走,但似乎无法弄清楚最后一部分。
背景:
我需要将命令输出\\%%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
)
额外:
现在,如果我只有可以使用的路径,那么第一组代码就可以工作,但是因为它包含文件名,所以比较不匹配。 因此,要让这项工作发挥作用,我想有两种途径。
- 尝试获取
"%somepath%"=="%somepath:some_exclusion=%"working - 尝试去掉文件名
我遇到的问题是:
-
%somepath%不起作用,因为我似乎无法将%%A存储为像%var%这样的变量 - 我似乎无法在文件名之前停止路径名。
请帮忙
【问题讨论】:
-
您是否尝试在
if中使用通配符? -
在
if not \\%%A\%%B==%BACKUPDIR%之前添加echo if not \\%%A\%%B==%BACKUPDIR%,在if not \\%%A\%%B==%TEMPLATEPATH%\*之前添加echo if not \\%%A\%%B==%TEMPLATEPATH%\*等等,看看有什么问题...==调用简单的文本comarison,没有可能的通配符 -
我只是举个例子,因为我需要找到 \\share\path\anything 匹配 \\share\path\
标签: windows loops batch-file cmd