首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Batch - Inverse/Negative FOR循环?

Batch - Inverse/Negative FOR循环?
EN

Stack Overflow用户
提问于 2011-05-10 03:04:06
回答 3查看 442关注 0票数 1

我正在尝试将多个文件连接成两个单独的文件。

第一个文件将是文件名中带有"bob“的所有其他文件的串联。第二个文件是文件名中没有"bob“的所有文件的串联。在实际进行连接之前,两个文件都将输出文件的名称。

这是我到目前为止所知道的:

代码语言:javascript
复制
            @echo off
            setlocal EnableDelayedExpansion
            set bob=All_bob.txt
            set jimmy=All_jimmy.txt

            if exist %bob% del %bob%
            if exist %jimmy% del %jimmy%

            for %%a in (*bob*.txt) do (
            echo /* >>%bob%
            echo * %%a >>%bob%
            echo */ >>%bob%
            copy/b %bob%+"%%a" %bob%
            echo. >>%bob%
            echo. >>%bob%)


            for %%a not in (*bob*.txt) do (
            echo /* >>%jimmy%
            echo * %%a >>%jimmy%
            echo */ >>%jimmy%
            copy/b %jimmy%+"%%a" %jimmy%
            echo. >>%jimmy%
            echo. >>%jimmy%)

然而,第二个FOR循环(在底部)不想使用"not",并使用这样的感叹号...

代码语言:javascript
复制
            for %%a !(*bob*.txt) do (

...也不想工作.那么,如何连接不包含括号内内容的文件呢?

EN

回答 3

Stack Overflow用户

发布于 2011-05-10 03:46:11

我不认为有一个干净的解决方案。

您可以使用FINDSTR来过滤%%a,但这需要将*bob*.txt转换为正则表达式,这可能不容易自动化。

另一个(丑陋的)解决方案是使用嵌套循环:

代码语言:javascript
复制
echo bob:
for %%a in (*bob*.txt) do (
    echo %%a
)

echo not bob:
for %%a in (*) do (
    setlocal ENABLEDELAYEDEXPANSION&set inc=1
    for %%b in (*bob*.txt) do if "%%~a"=="%%~b" set inc=0
    if "!inc!"=="1" echo %%a
    endlocal
)
票数 0
EN

Stack Overflow用户

发布于 2011-05-10 03:52:18

使用find怎么样:

代码语言:javascript
复制
for /F %%a in ('dir /b *.txt') do (
echo %%a | find /V "bob")

这应该会返回所有不包含"bob“的.txt文件。

票数 0
EN

Stack Overflow用户

发布于 2011-05-10 08:54:14

使用findstr*bob*.txt的正则表达式

代码语言:javascript
复制
for /f "usebackq delims=" %%a in (`dir /b ^| findstr ".*bob.*\.txt"`) do (…)

只需使用/V开关即可处理所有其他文件:

代码语言:javascript
复制
for /f "usebackq delims=" %%a in (`dir /b ^| findstr /v ".*bob.*\.txt"`) do (…)

有关详细信息,可以使用help命令或forfindstr/?开关。

我清除了分隔符(delims=),以便在文件名中留出空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5941263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档