在for循环中使用filename变量

时间:2018-05-24 17:34:24

标签: batch-file variables for-loop

我有一个包含文件的目录(实际上它有很多文件,但我想让一个工作是构建循环以点击每个文件之前的第一步),需要进行编辑和保存类似的文件名。我不想手动输入文件名,而是想使用包含文件名的变量。

Sample Input Data
FileX.txt
Text line 
Text line 
Text line

Desired Output Data
FileX2.txt
1 Text line
2 Text line
3 text line

我可以一次用一个文件来管理它,我很难编写一个脚本来查看文件夹的内容并对文件夹中的每个文本文件执行此操作。

我在Windows 7上,这就是我到目前为止所做的:

@echo off
setLocal EnableDelayedExpansion
Set N=0
REM THE BELOW LINE IS THE VARIABLE I'M TRYING TO SET AND THEN HAVE PASSED AS THE FOR LOOP PARAMETER
Set F="FILENAME"

REM IF I SKIP A VARIABLE AND HARDCODE THE FILENAME IN THE BELOW LINE, IT WORKS FOR THE ONE FILE
for /f "tokens=* delims= " %%a in (FILENAMEVARIABLE.txt) do (
Set /a N=!N!+1
echo !N! %%a, >> !F!.txt
)

for循环的开始语句是我无法获取变量的地方。在FILENAMEVARIABLE.txt中,我尝试了%% F,%F,!F!和%% ~nxf,这些都没有设法调用正确的文件来启动循环。我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:0)

以下是我认为您要做的事情:

@Echo Off
SetLocal EnableDelayedExpansion
For %%A In (*.txt) Do (Set "N=0"
    (For /F "UseBackQ Tokens=*" %%B In ("%%A") Do (Set /A N +=1
            Echo !N! %%B))>"%%~nA2%%~xA")

您也可以使用FindStr

@Echo Off
For /F "Tokens=1-2* Delims=:" %%A In ('FindStr /N "^" *.txt 2^Nul'
) Do >>"%%~nA2%%~xA" Echo %%B %%C

在上述两个例子中,我假设源目录和脚本目录是相同的。