我一直在尝试使用文本文件的行连接字符串,但是我的代码出了问题,我相信我在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 -
答案 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!
)