Windows命令行完整路径通配符问题:子目录路径未正确识别
解决CMD中For命令通配符路径丢失问题
问题原因
当你在for %f in ("src/*.c")这类写法中使用带路径的通配符时,CMD的for命令会将路径部分(src/)作为搜索目录,仅返回匹配的文件名给%f。此时%~dpnxf会自动拼接当前工作目录(c:\dev)与文件名,导致预期的src子目录路径丢失。
两种可行解决方案
方案一:使用
for /r指定搜索路径
利用for /r命令的路径指定功能,直接将目标子目录作为搜索起始点,命令如下:c:\dev>for /r src %f in (*.c) do @echo %~dpnxf该命令会在
src目录下搜索所有.c文件,并输出完整的绝对路径,结果符合预期:c:\dev\src\main.c。方案二:结合
dir命令与for /f解析输出
通过dir /b /s获取指定路径下的完整文件列表,再用for /f读取并输出,命令如下:c:\dev>for /f "delims=" %f in ('dir /b /s src\*.c') do @echo %fdir /b /s会输出包含路径的文件名,for /f的delims=参数确保文件名含空格时也能正确读取。
内容的提问来源于stack exchange,提问作者rphii
相关产品推荐
相关产品推荐

