【问题标题】:Batch: Read string from file, write to another file批处理:从文件中读取字符串,写入另一个文件
【发布时间】:2012-12-04 10:44:37
【问题描述】:

我正在尝试创建一个批处理文件,它将读取和替换另一个文件中指定的文本行/字符串。

例子:

我有一个位于\\company.local\netlogon\data.txt 的文件,其中包含以下内容:

JohnDoe=157 JoeSmith=104 JoeBloggs=514

我想读取等号后面的那些字符串,所以基本上作为一个登录脚本,我可以搜索包含%username% 的行,然后将等号后面的数字读入一个变量,例如%number%

所以如果JohnDoe 登录,它会搜索他的名字并读取157

然后我希望能够在另一个文件中搜索字符串并写入特定字符串,因此它会搜索 Extension= 并在其后写入 157

Extension=%number% 这样的东西,然后会以Extension=157 的形式读入文件。

非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 如果您要进行修改,请进行小修改,我已经按照 SO 标准为您修改了 :)
  • @BaliC:那是急于为你编辑。 :) 当你开始修复它时,OP 一定还在整理帖子的过程中。有时您只需要耐心等待一段时间,直到它稳定下来,然后再开始清理。 :)
  • @AndriyM 是的,我想我在他们发布的时候看到了这个帖子,并开始编辑它:)
  • @Antony - 阅读文件看FOR/?,搜索看findstr /?,写作看重定向,比如echo Extension=123 >> myFile.txt

标签: batch-file


【解决方案1】:

不确定您是如何格式化文件的,但如果您将每个条目都作为新行,这将起作用。

set extlist=P:\ath\to\extensionlist.txt
set userdata=P:\ath\to\directory\%username%.txt

for /f "tokens=1,2 delims==" %%a in (%extlist%) do if /I %%a.==%username%. set ext=%%b

ren %userdata% %username%.txt.bak
for /f "tokens=1,2 delims==" %%a in (%userdata%.bak) do if /I %%a.==Extension. (echo Extension^=^%ext%>>%userdata%) else (echo %%a^=^%%b>>%userdata%)
del /Q %userdata%.bak

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多