【问题标题】:Change line in text file from other text file with command line使用命令行从其他文本文件更改文本文件中的行
【发布时间】:2015-05-17 12:48:55
【问题描述】:

我需要复制一个文本文件的特定行,然后将文件替换为选定的其他文件,并用复制的文本行替换同一行。我有命令行:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set mca=%cd%
cd /d %SYSTEMDRIVE%\PMJ\PROGRAMS\
set programs=%cd%
:select
echo.
echo   Which file?
echo.
echo  (without.PRG)
echo.
set /p load=
if exist %programs%\%load%.PRG (goto start) else (goto err1)
:err1
echo Not found
goto select
:start
for /F "tokens=*" %%B in (%mca%\mlfb.txt) do (
    findstr /B /C:"  InterlockingName     = " %programs%\%%B > %mca%\actual.txt
    set /p "actual= < %mca%\actual.txt"
    copy /y %programs%\%load%.PRG %programs%\%%B
    fart -a %programs%\%%B "  InterlockingName     = " %actual%
)

搜索的行以InterlockingName = 开头,然后包含不同的字符。

文件 mlfb.txt 包含

40AK11600.PRG
40AK11601.PRG
40AK11602.PRG
40AK11603.PRG
40AK11604.PRG
40AK11605.PRG
40AK11637.PRG
40AK11638.PRG
40AK11653.PRG
4OAK11609.PRG
5WK11706.PRG
A2C5330886804.PRG
A2C8171710004.PRG

线

findstr /B /C:"  InterlockingName     = " %programs%\%%B > %mca%\actual.txt

创建文件 actual.txt,其中包含字符串 - 例如

InterlockingName     = 40AK11600

命令

copy /y %programs%\%load%.PRG %programs%\%%B

用选定的文件替换一个文件,但我不能用文件actual.txt中的行替换替换文件的行

fart -a %programs%\%%B "  InterlockingName     = " %actual%

(如果不需要文件actual.txt,可以去掉)。

【问题讨论】:

  • 完全不同的问题,但相同的solution(延迟扩展)
  • 您好,如何在命令行中应用延迟扩展。我对此一无所知。我需要使用更多 () 吗?
  • 在批处理文件中,您可以使用setlocal enabledelayedexpansion 启用它(当您的批处理文件结束时,有一个隐含的endlocal)。在命令提示符本身上,您不能这样做。但是,可以使用 cmd /v 启用延迟扩展来启动 new 命令提示符(请参阅 cmd /?

标签: windows batch-file for-loop command-line


【解决方案1】:

它正在使用修改过的命令行(从 :start 开始)

:start
for /F "tokens=*" %%B in (%mca%\mlfb.txt) do (
    findstr /B /C:"  InterlockingName     = " %programs%\%%B>%mca%\actual.txt & set /p actual=<%mca%\actual.txt
    copy /y %programs%\%load%.PRG %programs%\%%B
    findstr /B /C:"  InterlockingName     = " %programs%\%%B>%mca%\before.txt & set /p before=<%mca%\before.txt
    %fart% -a %programs%\%%B "!before!" "!actual!"
)

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2013-10-14
    • 1970-01-01
    • 2022-12-17
    • 2014-11-18
    • 2016-12-03
    • 2015-07-20
    • 2013-02-04
    • 2014-10-04
    相关资源
    最近更新 更多