如何将字符串与文本文件的行连接起来

时间:2012-09-17 11:27:15

标签: text cmd concatenation

我一直在尝试使用文本文件的行连接字符串,但是我的代码出了问题,我相信我在For循环中使用的agruments。如果有人可以帮助我,我会非常感激。

我的代码是:

@echo off
set "input=C:\Users\123\Desktop\List.txt"
for /f "usebackq tokens=*" %%F in ("%input%") do (
        set "str1=C:\some directory\"
    set "str2=%%~F"
    set "str3=.pdf"
    set "str4=%str1%%str2%%str3%"
    echo.%str4%
)

和文本文件类似:

121122
122233
123344
124455

但我只是得到一个错误的答案,我必须运行它3次以获得真实的结果而且它是错的,前两个是空格而第三个给出了文本文件中的最后一行但是重复了n次,其中,n是文本文件中的行数。

结果:

C:\Users\123\Desktop>concatenate.bat





C:\Users\123\Desktop>concatenate.bat





C:\Users\123\Desktop>concatenate.bat
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf

C:\Users\123\Desktop>

所以,如果有人对错误有任何疑问,请告诉我。

此致

-Victor -

1 个答案:

答案 0 :(得分:0)

您需要启用延迟扩展功能。这是必需的,因为在FOR命令块中,您需要引用已修改的变量。

@echo off
setlocal enabledelayedexpansion
set "input=C:\Users\123\Desktop\List.txt"
for /f "usebackq tokens=*" %%F in ("%input%") do (
    set "str1=C:\some directory\"
    set "str2=%%~F"
    set "str3=.pdf"
    set "str4=!str1!!str2!!str3!!"
    echo. !str4!
)