批处理:搜索字符串以跳过上面的行并将结果写入新文件

2023-12-01

我已经成功编写了一个脚本,它需要一个字符串在特定文件中搜索,然后输出它第一次出现的行,然后我将该值放入 for 循环中并跳过解析该行数并写入它内容到一个新文件。然而,我没有得到空行,我发现这很难解决。

我正在搜索的字符串是“/]”,缓存它出现的行号,然后将其累积到一个以逗号分隔的变量中。然后,我再次将该变量放入 for 循环中,并检索第一个出现的值作为我的最终“跳过此行数”变量,然后在底部 for 循环中使用该变量,再次读取该文件并将其值写入一个新文件并跳过文件开头的行数。

这是执行我上面描述的脚本的部分:

setlocal enabledelayedexpansion
setlocal enableextensions
set live_svn_access_file=c:\csvn\data\conf\svn_access_file
set of=c:\test.txt

for /f "Tokens=1 Delims=:" %%i in ('findstr /n /c:"/]" %live_svn_access_file%') do (
    rem cache value in a variable
    set line=%%i
    rem accumulate data to one variable
    if defined line set skip=!skip!, !line!
)
rem strip first two characters in variable ", "
set skip=!skip:~2!
rem strip everything except first value in array
for /f "Tokens=1 Delims=," %%i in ('echo !skip!') do (
    rem store value in a variable
    set skip=%%i
)
rem calculate lines - 1 (arithmetic)
set /a skip=!skip!-1
set skip=!skip!

if not defined skip set error=Could not automatically find which parts to skip from live svn_access_file && goto error-handler

for /f "Tokens=* Delims= Skip=%skip%" %%i in (%live_svn_access_file%) do (
    rem cache value in a variable
    set read-input=%%i
    rem write and append content of variable to output-file
    echo !read-input! >> %of%
)

我重写了脚本以匹配工作脚本,这是更改后的脚本:

setlocal enabledelayedexpansion
setlocal enableextensions
set live_svn_access_file=c:\csvn\data\conf\svn_access_file
set of=c:\test.txt

for /f "Tokens=1 Delims=:" %%i in ('findstr /n /r /c:"\[..*\]" %live_svn_access_file%') do (
    rem cache value in a variable
    set line=%%i
    rem accumulate data to one variable
    if defined line set skip=!skip!, !line!
)
rem take the 2nd sections linenumber into a variable, skipping the first [*foo*]
for /f "Tokens=2 Delims=," %%i in ('"echo !skip!"') do (
    rem store value in a variable
    set skip=%%i
)
rem add 1 line to skip from retrieved value
set /a skip=!skip!-1

rem verify that number of lines to skip has been successfully retrieved, if not go to error-handler
if not defined skip set error=Could not automatically find which parts to skip from live svn_access_file && goto error-handler
if ["%skip%"] LSS ["1"] set error=Number of lines to skip was less than 1, this will most likely fail && goto error-handler

rem read live svn_access_file, but skip X-lines and write to output-file
setlocal DisableDelayedExpansion
for /f "usebackq Delims= Skip=%skip%" %%i in (`"findstr /n ^^ %live_svn_access_file%"`) do (
    rem cache value in a variable
    set read-input=%%i
    rem write and append content of variable to output-file
    setlocal EnableDelayedExpansion
    rem strip line number prefix
    set read-input=!read-input:*:=!
    rem write read lines to output-file
    echo(!read-input!>>%of%
    endlocal
)

你有两个主要问题,FOR /F 无法读取空行(正如你所发现的),如果你使用延迟扩展,你会遇到行中感叹号和插入符的麻烦set read-input=%%i.

您可以通过使用 findstr 在每行前添加行号来解决空行问题。 第二个采用延迟切换技术。

SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
    set "var=%%a"
    SETLOCAL EnableDelayedExpansion
    set "var=!var:*:=!" This removes the prefix
    echo(!var!
    ENDLOCAL
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批处理:搜索字符串以跳过上面的行并将结果写入新文件 的相关文章

  • 开放简历fisherfaces

    我有这个问题 当我使用 vs2010 调试 opencv 2 4 0 facetec demo c 运行时 程序出现此错误 OpenCV错误 未知函数中图像步长错误 矩阵不连续 因此其行数无法更改 文件 src opencv modul e
  • C++11 基于范围的 for 循环效率“const auto &i”与“auto i”

    在 C 11 中 我可以像这样迭代一些容器 for auto i vec std cout lt lt i lt lt std endl 但我知道这是不必要的 不必要地 因为我只需要print的价值观vec 复制 EDIT 的每个元素vec
  • 使用 Rust 构建的 DLL 在运行时是否需要 libgcc.dll?

    如果我构建一个 DLLRust 语言 http rust lang org 是否需要libgcc dll在运行时出现 一方面 我在互联网上的某个地方看到过一个帖子 声称是的 rustc exe has libgcc s dw2 1 dll在
  • 高级 Win32 图像文件 I/O?

    我想在 Windows C 应用程序中将图像文件读入内存 什么是一个相当简单的解决方案 也许类似于 IOS 提供的UIImage 我希望支持合理数量的文件格式 我需要为图像处理的位图提供一些低级访问权限 我在互联网上阅读了很多内容 看起来
  • Windows:如何获取所有可见窗口的列表?

    无论如何都要使用相关技术重新标记 我不知道它们是什么 稍后我可能会提出更详细的问题 关于具体细节 但现在我正在尝试掌握 大局 我正在寻找一种方法来枚举 Windows 上的 真实可见窗口 我所说的 真正可见的窗口 就是指 用户所说的 窗口
  • 适用于 Python 的 GitLab CI 共享 Windows 运行器

    我在 GitLab 中有一个 python 项目仓库 我看到 GitLab 共享了可用的测试版 Windows 运行程序 请参阅this https about gitlab com blog 2020 01 21 windows shar
  • Java - 使用 JNA 的 Windows 任务栏 - 如何将窗口图标 (HICON) 转换为 java 图像?

    我正在尝试将应用程序切换器添加到我正在处理的更大项目中 它需要在 Windows XP Vista 7 8 上运行 我正在使用 Java 1 7 下面是我创建的一个示例应用程序 用于演示我遇到的一些问题 我对 JNA 很陌生 非常感谢 充满
  • 为什么允许在 for 循环中使用列表订阅? [复制]

    这个问题在这里已经有答案了 Python 如何接受以下构造 l 1 2 3 4 for i l i in enumerate l print l i 似乎没有任何抱怨 愉快地打印出来1 2 3 4 这是如何被允许的以及它到底有什么作用 Th
  • WndProc调用机制(WinAPI)

    我试图了解 Windows 应用程序是如何工作的 有一个WndProc函数 其中发生消息处理 LRESULT CALLBACK WndProc HWND hwnd UINT msg WPARAM wParam LPARAM lParam s
  • Lua 上的 For 循环

    我的作业是如何执行 for 循环 我已经从数字上弄清楚了 但无法从名称上弄清楚 我想创建一个 for 循环来运行名称列表 以下是我到目前为止所拥有的 names John Joe Steve for names 1 3 do print n
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc
  • Windows 10:任务栏中的图标大小错误

    从 Windows 10 开始 任务栏中的图标大小似乎为 24x24px 如果 Windows 选择图标文件中的 24px 版本进行显示 那么这不会有问题 但它选择了 32px 版本并将其缩小 这会导致丑陋的伪像 尤其是当你的图标中有直线时
  • 防止 DLL 文件通过 MS Detours 加载到我的进程中

    我想阻止特定的第三方 DLL 文件在运行时加载到我的应用程序进程中 我最初的尝试是使用 MS Detours 产品 我有一个32位的MFC http en wikipedia org wiki Microsoft Foundation Cl
  • 无法单步执行远程 SQL Server 2008 上的存储过程

    我在虚拟上安装了一个域控制器Windows Server 2008 x64 SQL Server 2008 Express x64正在运行Windows Server 2008 x64和客户端Windows 7 RTM x86 两者都已加入
  • 使用 WriteConsoleOutput 用 c# 编写 Unicode

    我正在尝试使用WriteConsoleOutput来自 kernel32 dll 的函数 但是我无法正确显示 unicode 字符 它们总是显示为错误的字符 我尝试过使用 Console OutputEncoding System Text
  • 命令行字符串的最大长度

    在Windows中 命令行字符串的最大长度是多少 意思是如果我指定一个在命令行上接受参数的程序 例如abc exe name abc 我编写的一个简单的控制台应用程序通过命令行获取参数 我想知道最大允许数量是多少 来自微软文档 命令提示符
  • 如何在 IIS 上设置 Mercurial 和 hgweb?

    我一直在寻找关于如何让 hgweb 在 IIS 上工作的不错的说明 但我没有发现太多有价值的信息 There s 这个 一步一步 https www mercurial scm org wiki HgWebDirStepByStep在 Me
  • for 循环在 Python 中生成/导出输出所需的时间太长

    这个问题是上一个问题的延续for 循环花费太长时间才能产生输出 https stackoverflow com questions 41339200 for loop taking too long to produce output no
  • 有什么理由不在Python中混合使用多处理和线程模块

    我正在考虑使用Python来实现一个需要大量多线程的程序 另一个要求是它将在桌面上运行 因此拥有许多进程将使应用程序显得混乱且难以杀死 在任务管理器中 因此 我正在考虑使用线程和多处理模块来减少进程数量 据我了解 GIL 仅适用于单个进程
  • 谷歌基准迭代的意义是什么?

    我正在使用 Google Benchmark 来测量某些代码的执行时间 例如 我编写了以下代码来测量其执行时间性能 include

随机推荐

  • 如何使补充视图在 UICollectionView 中浮动,就像 UITableView 普通样式中的节标题一样

    我正在努力实现 浮动节标题 效果UICollectionView 一些很容易的事情UITableView 默认行为UITableViewStylePlain 似乎不可能UICollectionView无需付出很多努力 我错过了显而易见的事情
  • For 循环迭代 2 的幂

    我想编写一个 for 循环 为每个循环迭代 2 的幂 例如我想要一个这样的范围 2 4 8 16 1024 我怎么能这样做呢 您可以使用生成器表达式这样它就可以根据需要生成数字并且不会浪费内存 gt gt gt for x in 2 p f
  • 从描述符字符串恢复 .proto 文件。可能的?

    是否可以将包含 Protocol Buffers 描述符的字符串反编译回 proto 文件 假设我有一个长字符串 例如 n file proto u001a u000ccommon proto u00a3 u0001 n nMsg1Requ
  • 如何在没有 Web 请求或 Web 服务器的情况下解析 JSON 文件?

    寻求建立以下解决方法 getJSON myfile json function data showAll data 我想避免使用网络服务器 但只想直接访问文件 getJSON使用网络请求 出现错误 XMLHttpRequest cannot
  • PHP 中的 MySQL 与 MySQLi [重复]

    这个问题在这里已经有答案了 各自的区别 优点是什么 缺点 我不是在寻找编码偏好或主观答案 什么是实际的差异 存储 实现 代码的样子 环境要求 您可以使用准备好的陈述与 mysqli 还有一个存储大 blob 数据的函数 旧的 mysql 扩
  • 为什么IE8是IE7模式。变量“IE”== 7

    我的 HTML 页面中有如下标题 我在 IE8 中打开该网站 当我在 Web Developer 中查看它时 如果 IE 7 处于活动状态 WebBrowser 在 IE8 紧凑视图 上设置 BrowserMode 在 IE7 标准 上设置
  • Facebook FQL 获取 Facebook 页面的粉丝列表[重复]

    这个问题在这里已经有答案了 可能的重复 查询 喜欢 我的 Facebook 页面的用户 目前该网站上的所有解决方案都不起作用 我是 Facebook 页面的管理员 想导出所有粉丝的 ID 这可能吗 https api facebook co
  • Mysql - CAST 的唯一约束(TIMESTAMP as DATE)

    我有一个TIMESTAMP myDate我的 MYSQL 表中的字段 有没有办法可以定义一个唯一的字符串stringForTheDay对于每一个day in myDate 就像是 UNIQUE stringForTheDay day in
  • SVG 膨胀/侵蚀滤镜与 Illustrator 偏移路径

    下面是在 Chrome 22 0 1229 79 Mac 上呈现的 SVG 图像的屏幕截图 原始的 svg 位于 jsfiddle 上 http jsfiddle net LGBk5 左图是使用 SVG s 扩张和腐蚀滤镜制作的 右图是使用
  • Node.js Web 服务器中的并行请求

    如果我有一个运行 Node js 的 Web 服务器 那么我是否能够同时处理多个请求 从我的初步测试中我可以看出 Node 主要是单线程的 目前只能处理一个 HTTP 请求 但如果一个请求需要很长时间才能完成 例如上传大量数据 则所有其他请
  • 如果我不编辑代码,PHP Mail 就会停止工作

    我的 PHP 邮件有问题 它有时会停止工作 我什至没有接触代码 我有一个脚本可以检查所需的表单是否为空 这个脚本有效 但是 如果我填写所有必填字段 我应该会收到一条文本 显示 您的邮件已成功发送 但我没有 但是 如果我通过仅将一些文本向下移
  • C# 实体 LINQ 返回错误且重复的值

    我使用以下代码 List
  • cakephp 2 ajax 表单

    我在 cakephp 2 中构建 ajax 表单时遇到问题 它显然自 1 3 以来已经发生了很大变化 我正在使用以下代码 div div div div
  • C 中的通用二叉搜索树

    我已经实现了二叉搜索树 但我也想使其通用 代码如下 typedef struct treeNode int data struct treeNode left struct treeNode right treeNode 和功能 treeN
  • laravel with() 方法与 load() 方法

    我真的很努力去理解两者之间的区别with 方法和load 方法 但没能真正理解 据我所知 使用with 方法 更好 因为我渴望加载关系 看来如果我使用load 我加载关系就像使用hasMany 或与对象之间的关系相关的任何其他方法 我理解错
  • 传递到字典中的模型项是 .. 类型,但是该字典需要类型为 的模型项

    添加了此问题和社区维基答案 以帮助解决许多未解答的问题 如中讨论的这个元帖子 我有一些代码 当它执行时 它会抛出一个异常 传递到字典中的模型项是 Bar 类型 但该字典需要 Foo 类型的模型项 这是什么意思 我该如何解决 该错误意味着您正
  • 单个查询中的 EF 多个聚合

    我想根据不同的条件获取一组的计数 var invoices new AccountingEntities Transactions var c1 invoices Count i gt i Type 0 var c2 invoices Co
  • Opera PreventDefault() on keydown 事件

    我正在尝试在我的网络应用程序中嵌入一些按键绑定 但我在 Opera 上遇到了困难 我有这个代码 window onkeydown function e var key e keyCode e keyCode e charCode e cha
  • 当我编织时,Rstudio 正在删除关键文件(PDF 和 HTML)

    所以我正在做一场 R 噩梦 我已经返回到在 RStudio 的上一次迭代 或可能更多 下构建的项目 我制作了一份可行的报告 并要求我更新 而我当前的烦恼那时并不存在 发生的情况如下 My report file is ISS Time Se
  • 批处理:搜索字符串以跳过上面的行并将结果写入新文件

    我已经成功编写了一个脚本 它需要一个字符串在特定文件中搜索 然后输出它第一次出现的行 然后我将该值放入 for 循环中并跳过解析该行数并写入它内容到一个新文件 然而 我没有得到空行 我发现这很难解决 我正在搜索的字符串是 缓存它出现的行号