首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批处理以从预定义列表中将某些字符串附加到特定的.txt文件中?

批处理以从预定义列表中将某些字符串附加到特定的.txt文件中?
EN

Stack Overflow用户
提问于 2016-12-10 03:33:04
回答 2查看 28关注 0票数 0

我使用for循环来创建带有预定义头的文本文件,但我想附加一个唯一的字符串(alice、bob等)。在每个文件的第2行上,从预定的列表。

代码语言:javascript
运行
复制
Set a=alice
Set b=bob
Set c=chris

Rem ...etc. (I have about 30 files with a unique name to go in row 2 of each file)

For /l %%x in (1, 1 , 30) do (echo headerRow1 > file%%x.txt & echo %a% > file%%x.txt)

我不明白如何在第二次迭代中自动插入"bob“(即。在“file2.txt”和"chris“中进行第三次迭代,并继续处理30个文件。

我是否以某种方式循环%a%部件以使每次增加一个。我应该如何命名字符串变量才能做到这一点?这些都是正确的问题吗?

谢谢你找我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-10 04:24:00

似乎您要解决的问题是能够在一个for循环中的两个列表之间迭代,而for循环一次只能迭代一个集合。这个问题更难解决,因为数组和列表并不是作为一流公民在批处理中真正存在的。

解决这个问题的方法有很多种,但一种更简单的方法是遍历名称,每次通过循环增加一个计数器。(这可能比for /l循环和递增名称列表更容易。)

下面是一个例子。

代码语言:javascript
运行
复制
@echo off & setlocal enabledelayedexpansion
set names=alice bob chris
set x=1
for %%a in (%names%) do (
    >file!x!.txt (
        echo headerRow
        echo %%a
    )
    set /a x+=1
)

备注:

  • 将所有的名称设置在一行上,for循环可以迭代它们。
  • 在开始时设置计数器(x),然后在循环结束时增加它。
  • 我使用延迟扩展(setlocal enabledelayedexpansion)和!x!的语法,而不是%x%,这样批处理每次都通过循环解析变量x,而不是第一次(而且只有一次)通过循环来解析变量x,这样每次都能得到正确的增量值。

我希望这能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2016-12-10 04:42:14

代码语言:javascript
运行
复制
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "targetdir=U:\destdir"
SET "filename1=%sourcedir%\q40171884.txt"
SET "headerrow=This is your header"
SET "line2=This is line two for "
FOR /f "tokens=1*delims=[]" %%a IN ('find /n /v "" "%filename1%"') DO IF "%%b" neq "" (
>"%targetdir%\file%%a.txt" (
 ECHO(%headerrow%
 ECHO(%line2%%%b
 TYPE "%sourcedir%\thefilecontainingtheremainder.txt"
)
)

GOTO :EOF

您需要更改sourcedirtargetdir的设置,以适应您的情况。

我在测试中使用了一个名为q40171884.txt的文件,其中包含了您的名字。

使用文件"%sourcedir%\thefilecontainingtheremainder.txt"包含要分配给输出文件的数据体。很自然,这可能在任何地方。

本质上,取包含您的名字的文件名,并使用find /n /v ""在每一行前加上[sequencenumber]。使用delims of [],将前缀分配给%%a,将行的其余部分(名称)分配给%%b

find的第一行输出将报告文件名,但不包含[] (除非您变得愚蠢并以这种方式设计它),所以在这种情况下%%b将为空。我们跳过这一行,对于其他的,%%a包含数字,%%b包含名称。

然后创建新的输出文件"filenumber.txt“和两行--第二行附加了%%b (名称)。然后,通过简单的type对所需文本的其余部分进行反编译。

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

https://stackoverflow.com/questions/41071884

复制
相关文章

相似问题

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