我目前正在处理一个批处理文件,这让我很为难。我有一个生成的 .CSV 文件,其中包含一个标题和两列。该文件也恰好被编码为 ASCII(发现这一点真是一个启示!)第二列包含一个文本文件列表,我需要读取这些文件并将函数应用于其中包含的每个条目。
我想过使用复制或键入>>将文件合并为一个更容易解析的文件,但在读取 csv 的内容和使用该内容时遇到了困难......
到目前为止我正在使用
for /f "skip=1 usebackq tokens=1-2 delims=," %%a in ("%temp%\list.txt") do echo %%b>>"%temp%\newfile.txt"
但它不起作用……(我得到的只是一个空文件)而且我似乎无法弄清楚下一步该怎么做才能将函数应用于列出的所有文件,以便我可以处理它们的组合内容。我已经为此挣扎了两天,开始对看似简单的事情感到恼火,但我似乎无法弄清楚。
这是我的 CSV 文件的内容
客户编号,客户名称
44456,詹姆斯邦德
33356,邪恶博士
我有一个文件夹,里面有 James Bond.txt、Mister Rogers.txt、Chief Bob.txt 和 Doctor Evil.txt 等文件,其中包含客户信息。因此,我想要做的就是将 CSV 文件指定的必需名称放在一起,然后一次性打印出所有内容的完整列表。
希望这能澄清一些事情(我知道,这很难解释)
编辑我尝试了建议的代码片段,但它仍然不起作用......我得到的只是一个空文件......但出于某种原因,我认为它看起来很有希望。
答案1
假设Client name
列在带有扩展名的文件夹中具有相同名称的文件.txt
,则以下批处理应该可以完成。
:: Q:\TEST\2017-05\25\DEMO\SU_1212933.cmd
@Echo off
For %%A in (".\folder") Do Set "folder=%%~fA"
( for /f "skip=1 usebackq tokens=1* delims=," %%a in (
".\list.csv"
) do If Exist "%folder%\%%b.txt" Type "%folder%\%%b.txt"
) >".\Report.txt"
为了演示这是我的测试环境
> tree . /F
Q:\TEST\2017-05\25\DEMO
│ SU_1212933.cmd
│ list.csv
│ Report.txt
│
└───folder
James Bond.txt
Doctor Evil.txt
两个txt文件的内容folder
> type folder\*.txt
folder\James Bond.txt
#################################################
## this is file "James Bond.txt" in folder ##
#################################################
folder\Doctor Evil.txt
#################################################
## this is file "Doctor Evil.txt" in folder ##
#################################################
运行批处理后,文件 report.txt 包含:
> type Report.txt
#################################################
## this is file "James Bond.txt" in folder ##
#################################################
#################################################
## this is file "Doctor Evil.txt" in folder ##
#################################################