使用批处理脚本从多个相同的 .txt 文件中复制某个值 [重复]

Posted

技术标签:

【中文标题】使用批处理脚本从多个相同的 .txt 文件中复制某个值 [重复]【英文标题】:copy a certain value from multiple identical .txt files using batch script [duplicate] 【发布时间】:2022-01-14 04:23:48 【问题描述】:

我想从文件夹中找到的多个“相同”.txt 文件中将某个值复制到一个新的单个文件 (Ebinds.txt)。这些文件被命名为 log1.txt、log2.txt 等,我感兴趣的值总是放在同一个位置,即第 22 行,第 2 个值。 我搜索我的价值并复制它的部分工作正常。 我的问题是当我尝试遍历文件夹中的所有文件时(我得到的只是回显而不是值)

以下是我的文件夹中有 4 个文件时的代码示例。

@echo off

FOR /l %%P IN (1,1,4) DO (

set InFile=C:\Users\nuca\Desktop\dock_copy_Ebind\nodV_log%%P.txt

set /a "line = 0"
for /f "tokens=2 delims= " %%L in ("%InFile%") do (set /a "line = line + 1"
if !line!==22 set thing=%%L
)
endlocal && set thing=%thing%
echo %thing% >>C:\Users\nuca\Desktop\dock_copy_Ebind\Ebinds.txt
)

【问题讨论】:

【参考方案1】:

在当前代码中,在@echo off 下方添加setlocal enabledelayedexpansion 然后将变量从%thing% 更改为!thing!

但是,您不需要每次都set 变量:

@echo off
setlocal enabledelayedexpansion
for %%a in ("C:\Users\nuca\Desktop\dock_copy_Ebind\nodV_log*.txt") do (
    set cnt=
    for /f "usebackq delims=" %%i in ("%%~a") do (
       set /a cnt+=1
       if !cnt! equ 22 echo %%i
   )
)

【讨论】:

以上是关于使用批处理脚本从多个相同的 .txt 文件中复制某个值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Windows 批处理文件或 vbs 脚本一次将多个文件 1 从 2 个文件夹复制到另一个文件夹

ubuntu 用shell脚本实现将当前文件夹下全部文件夹中的某一类文件复制到同一文件夹下

使用 PowerShell 将多个 CSV 文件合并为一个

批量重命名具有不同扩展名Linux脚本的多个文件?

批处理文件中 find 命令的例子

批处理bat删除某文件和文件夹除外的所有文件和文件夹