使用批处理脚本进行字符串处理

2024-01-07

我当前正在创建一个批处理脚本,该脚本必须循环遍历文件中的行,检查某些字符串,以及是否存在带有“#”的匹配前缀(将其注释掉)。

我对批处理脚本完全陌生,到目前为止我所得到的是:

for /f %%j in (CMakeLists.txt) do (
    if "%%j"=="Extensions_AntTweakBar" (
        echo lol1
    )
    if "%%j"=="Extensions_Inspection" (
        echo lol2
    )
    if "%%j"=="Extensions_InspectionBar" (
        echo lol3
    )
)

所以我当前的问题是,我不知道如何在批处理脚本中操作字符串。如果有人可以帮助我,我将不胜感激:)


通常,您可以只使用要附加的文本,后跟变量。

C:\>set MY_VAR=Hello world!
C:\>echo #%MY_VAR%
#Hello world!

C:\>set MY_VAR=#%MY_VAR%
C:\>echo %MY_VAR%
#Hello world!

如果你只是做回声,那很好。echo #%%j会做你需要的。

但如果你想将该行设置为变量,你必须启用延迟扩展 http://batcheero.blogspot.com/2007/06/how-to-enabledelayedexpansion.html. Add setlocal ENABLEDELAYEDEXPANSION到文件的顶部,然后用!代替%。例如(请注意,我已经添加了delims=将整行放入%%j而不是该行的第一个单词):

@echo off

setlocal ENABLEDELAYEDEXPANSION

set LINE=
for /f "delims=" %%j in (CMakeLists.txt) do (
    set LINE=%%j
    if "%%j"=="Extensions AntTweakBar" (
        set LINE=#%%j
    )
    if "%%j"=="Extensions Inspection" (
        set LINE=#%%j
    )
    if "%%j"=="Extensions InspectionBar" (
        set LINE=#%%j
    )

    echo !LINE!
)

给定这个输入文件:

Extensions AntTweakBar
some text
Extensions Inspection
Extensions What?
some more text
Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text

上面的脚本产生以下输出:

C:\>comment.bat
#Extensions AntTweakBar
some text
#Extensions Inspection
Extensions What?
some more text
#Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text

当然还有删除@echo off将帮助您调试问题。

但话虽如此,您已经达到了批处理字符串处理所能完成的极限。如果您仍然想使用批处理命令,您可能需要开始将行写入临时文件并使用findstr用正则表达式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用批处理脚本进行字符串处理 的相关文章

  • 如何在javascript中将字符串转换为long?

    我有一个毫秒时间戳 需要将其从字符串转换为长整数 JavaScript 有一个parseInt但不是parseLong 那么我该怎么做呢 稍微扩展一下我的问题 鉴于 JavaScript 显然没有 long 类型 我如何使用最初表示为字符串
  • 拆分计算器的输入字符串

    我正在尝试拆分用户为我的计算器提供的输入 例如 如果用户输入 23 45 1 1 我希望将其拆分为 23 45 1 1 你正在寻找的东西叫做lexer A lexer将输入分割成块 称为tokens 您可以阅读 幸运的是 您的词法分析器非常
  • 使用 ICACLS 将文件权限设置为“只读”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我很难从简单 直观的方式转变过来chmod 400尝试在 Windows 命令提示符中执行相同的操作ICACLS 与 UNIX LINUX
  • 如何重载Lua字符串下标运算符?

    This debug getmetatable index function s i return s sub i i end 和这个 debug getmetatable index proc lua read 不起作用 Try debu
  • 在样式定义中使用@string资源

    我在 styles xml 文件中定义了类似以下内容 如下所示 但是Android由于使用 string fontExtraLarge而崩溃 我假设这是因为定义的顺序 但这合法吗 我可以使用样式 parent 属性来解决此问题 但对于只有一
  • 如何在 JavaScript 中进行字符串插值?

    考虑这段代码 var age 3 console log I m age years old 除了字符串连接之外 还有其他方法可以将变量的值插入到字符串中吗 从 ES6 开始 你可以使用模板文字 https developer mozill
  • python 从字符串创建对象

    我有下一个情况 以下方法的目标是返回从传入字符串创建的对象 所以我有 class Situation Generator pass 以及父类中的方法 class Generator object def createsituation se
  • 如何在 Swift 中按换行符分割字符串

    我有一个从文本文件中获得的字符串 文本文件 Line 1 Line 2 Line 3 我想将其转换为数组 每行一个数组元素 Line 1 Line 2 Line 3 根据文件的保存方式 字符串可能采用以下形式之一 string Line 1
  • java中的“字符串...”是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 可变参数和 参数 https stackoverflow com questions 1656901 varargs and the argument Java 参数中3个点 https stacko
  • 如何在命令提示符中仅显示具有备用数据流的文件

    我知道要在命令提示符中显示所有文件 如果有 的备用数据流 这是命令dir R 但是 如果我只想显示具有备用数据流的文件 该怎么办 dir s r findstr e DATA or dir r findstr e DATA 第一个将在所有子
  • 让 VBScript 检查文件名中包含特定单词的文件,然后查找并删除该文件

    我想知道是否有一种方法可以使我的 vbs 脚本可以检查并删除名称中含有特定单词的任何文件 这是我到目前为止所拥有的 x MsgBox Searching for any infected files 64 Search DIM filesy
  • 将字符串数组转换为字节数组

    好吧 在有人试图将其标记为重复之前 我是not要求将字符串转换为字节数组 我想要一个字符串数组 包含类似这样的内容 5 168 188 28 29 155 转换为字节数组 我已经搜索过 只能找到字符串到字节数组 这是完全不同的 谢谢 编辑
  • 如何在 Windows 路径中使用卷标?

    我想使用批处理文件从可移动驱动器复制文件 无论它获得的驱动器号是什么 到目前为止 还没有去 似乎没有任何现成的命令或第三方命令行工具可以处理基于卷标签的路径 我尝试了 FreeFileSync 但它可以大批量工作 并且我在这里需要精确的文件
  • 修改字符数组,修改部分向后显示

    我刚刚开始学习汇编 我正在尝试修改字符数组 这是我的汇编代码 data data byte Five 0 code Asm proc lea rax data mov dword ptr rax Four ret Asm endp end
  • php洗一副牌

    我想使用 php 创建随机桥手的集合 我认为我可以将有序的卡片包编码为字符串 deal下面 我喜欢它有 52 个字母 同时考虑大小写 我发现了 php 函数str shuffle 所以我想我可以做以下事情 pack abcdefghijkl
  • 批量-用特殊字符替换字符串

    我想使用批处理文件替换文件中的字符串 该字符串是 我想用以下方式替换它 我发现了几篇帖子 比如这个 如何替换 Windows 批处理文件中的子字符串 https stackoverflow com questions 5273937但该示例
  • 如何在 C# 中从字符串调用委托?

    是否可以通过变量名称 作为字符串 调用存储在变量中的委托 我想我必须使用反射机制 但我没有得到任何结果 示例代码 class Demo public delegate int DemoDelegate private static int
  • 将子字符串从 char* 复制到 std::string 的优雅方法

    我有这个char char line This is a great day string subLine 我要那个subLine会包括 is a great 从第 5 处复制 接下来的 10 个字符 有没有办法做到这一点而不是转换char
  • 解析字符串

    我有一个格式为 ABCDEFG 12 34 56 78 90 11 的字符串 我想将这两个用逗号分隔的值分隔成两个不同的字符串 我如何使用 c 语言在 gcc 中做到这一点 一种可能性是这样的 char first 20 second 20
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi

随机推荐