如何通过CMD读取文本文件中存储的多文件路径内容?
用CMD读取嵌套文本文件内容的解决方案
嘿,我来帮你搞定这个嵌套文件读取的需求!针对你说的主文件存子文件路径、子文件存共享路径的场景,我们可以用CMD的for /f循环来实现,下面分两种场景给你具体方案:
1. 直接读取所有子文件的完整内容
这个方案会遍历主文件d:\cifs\fslit.txt里的每一行(每个子文件路径),然后输出每个子文件的全部内容:
@echo off :: 定义主文件路径 set "mainFile=d:\cifs\fslit.txt" :: 遍历主文件中的每一行(子文件路径) for /f "usebackq delims=" %%a in ("%mainFile%") do ( :: 打印当前读取的子文件路径,方便区分 echo --- 正在读取文件: %%a --- :: 输出子文件的完整内容 type "%%a" :: 输出空行,分隔不同子文件的内容 echo. )
命令解释:
@echo off:关闭命令行的回显,让输出更整洁usebackq:允许我们用双引号包裹主文件路径,避免路径里有空格时出错delims=:保留整行内容(默认会用空格分割行内容,这个参数可以防止路径被截断)%%a:循环变量,代表主文件里的每一行(也就是子文件的完整路径)
2. 只提取子文件中的共享路径
如果你的子文件内容格式是"d:\cifs\katowice\cifs_list.txt" : \\katowice\cifs\project\current\box\proj1这种,想要只提取后面的共享路径,可以用下面的优化版本:
@echo off set "mainFile=d:\cifs\fslit.txt" for /f "usebackq delims=" %%a in ("%mainFile%") do ( if exist "%%a" ( echo --- 来自文件 %%a 的共享路径: --- :: 遍历子文件的每一行,提取共享路径部分 for /f "tokens=3* delims=: " %%b in ('type "%%a"') do ( echo %%b%%c ) echo. ) else ( echo ⚠️ 警告: 文件 %%a 不存在,已跳过! ) )
命令解释:
if exist "%%a":先判断子文件是否存在,避免出现找不到文件的错误提示tokens=3* delims=::用冒号和空格作为分隔符,提取第3个及以后的内容(因为前两个是文件名和冒号),*会把后面的所有内容合并到%%c里,避免共享路径有空格时被截断
额外注意事项
- 如果你的文件路径或内容里包含特殊字符(比如
&、|),可以在路径前后加双引号,或者用^转义特殊字符 - 主文件里的空行会被
for /f自动跳过,不需要额外处理 - 如果需要把所有内容输出到一个新文件里,可以在命令最后加
>> 输出结果.txt,比如把type "%%a"改成type "%%a" >> d:\cifs\所有共享路径.txt
内容的提问来源于stack exchange,提问作者frodo
相关产品推荐
相关产品推荐

