【问题标题】:CMD Batch - Search for last occurence of character while looping through fileCMD Batch - 在循环文件时搜索最后出现的字符
【发布时间】:2016-11-17 13:57:45
【问题描述】:

我有一个 .txt 文件,我循环遍历每一行并假脱机到另一个文件。好的,到目前为止没有问题。但我不想使用具有以下标准的线:

它们包含更多的斜线。找到最后一个斜线。在此之后搜索字符串的其余部分以查找 .***(* = 通配符)。如果没有找到,不要假脱机,否则假脱机。

输入文件内容例如:

c:/abc/abc/
c:/abc/abc/test.txt
c:/eee/
c:/eee/test.cfg
c:/test/abc/test/xxx/bbb/ccc/aaa/test.txt
c:/test/abc/test/xxx/bbb/ccc/aaa/

输出应如下所示:

c:/abc/abc/test.txt
c:/eee/test.cfg
c:/test/abc/test/xxx/bbb/ccc/aaa/test.txt

这行出现的位置不是静态的,应该删除。所以我想找到最后一个斜线,然后把所有的东西都拿走,看看最后一个是否是“。***”如果是这样,请保留否则不要回显

我不想为此使用其他工具。它必须通过本机命令行功能来完成。

也许有人可以帮助我。

代码:

 >OUTPUT.txt (
FOR /F "usebackq delims=" %%I IN ("FILE.txt") DO (
set "line=%%I"
setlocal enabledelayedexpansion
rem DO SOMEHTING HERE I DON`T KNOW HOW TO DO
echo(!line!)
)
)

【问题讨论】:

    标签: windows loops batch-file cmd


    【解决方案1】:

    只需在一行中使用findstr 及其正则表达式模式(\....$ 表示所有以. 结尾的字符串后跟3 个字符):

    findstr /R \....$ FILE.txt
    

    结果:

    c:/abc/abc/test.txt
    c:/eee/test.cfg
    c:/test/abc/test/xxx/bbb/ccc/aaa/test.txt
    

    【讨论】:

    • 谢谢。这是一个很好的解决方案。如果我最后没有斜线怎么办?然后我想在最后一个斜杠后面取字符串,看看它是否包含 .*** 。我怎样才能做到这一点?
    • 我看错了你的问题。我已经编辑了我的答案。结果当然是一样的:)
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多