编写Windows批处理文件为dir输出的文件名添加指定路径前缀的方法
编写Windows批处理文件为dir输出的文件名添加指定路径前缀的方法
当然可以解决这个问题!你需要的是给dir /b /a-d输出的每个文件名手动加上指定的路径前缀,而不是用dir /s/b生成的绝对路径。这里有几种实用的批处理方案:
方法一:使用FOR循环遍历文件名(最推荐)
这是最灵活且兼容性好的方式,能完美处理带空格的文件名(虽然你的例子里没有,但提前规避问题总是好的):
@echo off :: 定义你需要的路径前缀 set "target_prefix=\\jdeappp03\EDI\" :: 遍历当前目录下所有非目录的txt文件,输出带前缀的路径 for /f "delims=" %%f in ('dir /b /a-d *.txt') do ( echo %target_prefix%%%f ) :: 如果需要将结果保存到文件,把上面的echo改成下面这行即可 :: echo %target_prefix%%%f >> file_list.txt
代码说明:
@echo off:关闭命令行的回显,让输出更整洁set "target_prefix=...":把你需要的路径前缀定义成变量,后续修改更方便for /f "delims=" %%f in ('dir /b /a-d *.txt'):遍历dir /b /a-d *.txt输出的每一个文件名,delims=确保文件名带空格时不会被拆分echo %target_prefix%%%f:拼接前缀和文件名并输出,如果要保存到文件就用重定向>>追加到目标文件
运行这个批处理后,就能得到你想要的输出格式:
\\jdeappp03\EDI\850_B_4545703_.txt \\jdeappp03\EDI\850_B_003029660_.txt \\jdeappp03\EDI\850_B_069029548_.txt \\jdeappp03\EDI\850_B_188789_.txt \\jdeappp03\EDI\850_C_ENT_1712865_.txt \\jdeappp03\EDI\850_C_ENT_1712871_.txt \\jdeappp03\EDI\850_C_1712877_.txt
方法二:使用PowerShell辅助(可选)
如果你的系统允许使用PowerShell,也可以用一行命令快速实现:
Get-ChildItem -File -Name *.txt | ForEach-Object { "\\jdeappp03\EDI\$_" }
把这行命令放到批处理里的话,可以写成:
@echo off powershell -Command "Get-ChildItem -File -Name *.txt | ForEach-Object {'\\jdeappp03\EDI\$_'}"
不过考虑到你明确提到要使用批处理文件,第一种FOR循环的方法会更稳妥,不需要依赖PowerShell环境。
备注:内容来源于stack exchange,提问作者Kram_Koorbse
相关产品推荐
相关产品推荐

