cmd - 修改文本文件中的行

时间:2016-04-07 05:09:13

标签: windows file cmd copy

我有以下文本文件:

c:/users/desktop
c:/users/test
c:/users/etc
....

每行在文本文件中都有一个字符串。我想修改文件,以便每行有两个字符串。它应该是这样的:

c:/users/desktop c:/users/desktop
c:/users/test c:/users/test
c:/users/etc c:/users/etc
....

在此之后,我想更改每行中的第二个字符串,使其成为新路径。有一个固定的NEW_PATH,其中包含必须插入的部分。修改后看起来像这样:

c:/users/desktop f:/etc/rel/users/desktop
c:/users/test f:/etc/rel/users/test
c:/users/etc f:/etc/rel/users/etc

我正在尝试将其保存在输出文件tocopy.txt中。

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

如果这是一个Windows平台,是否将/用作路径分隔符而不是\?使用字符串替换表达式是进行此更改的关键。

C:>TYPE tocopy.bat
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET EXITCODE=0

SET "OLDFILE=tocopy_source.txt"
SET "NEWFILE=tocopy.txt"
SET "OLDPATH=c:"
SET "NEWPATH=f:/etc/rel"

FOR /F "usebackq tokens=*" %%a IN (`TYPE "%OLDFILE%"`) DO (
    SET S1=%%a
    SET S2=!S1:%OLDPATH%=%NEWPATH%!
    ECHO %%a !S2!
)

EXIT /B %EXITCODE%

 8:39:26.37  C:\Users\pwatson\x
C:>TYPE tocopy_source.txt
c:/users/desktop
c:/users/test
c:/users/etc

C:>CALL tocopy.bat >tocopy.txt

C:>TYPE tocopy.txt
c:/users/desktop f:/etc/rel/users/desktop
c:/users/test f:/etc/rel/users/test
c:/users/etc f:/etc/rel/users/etc