Windows cmd如何生成适配javac的子目录.java文件路径文本文件
CMD生成javac所需sources.txt路径替换错误解决方案
错误原因
你的写法不符合CMD语法规则:
- CMD的字符串查找替换语法
%变量:查找=替换%仅支持普通命名环境变量,不支持for循环的单字母可替换参数(%A、%B这类) - 你直接对循环变量%A执行替换操作时,CMD会把
%A:\=\\识别为%A的取值拼接固定字符串:=\,因此会输出不符合预期的内容
正确实现命令
直接在CMD窗口按顺序执行以下命令即可生成符合要求的sources.txt:
- 先开启延迟环境变量扩展,同时清理旧的sources.txt文件:
setlocal enabledelayedexpansion del sources.txt 2>nul
- 执行遍历替换生成文件的命令:
for /f "delims=" %A in ('dir /s /B *.java') do (set "fp=%A" & echo "!fp:\=\\!" >> sources.txt)
逻辑说明
- 先将循环变量%A的取值赋值给普通环境变量
fp,再对fp执行字符串替换 - 开启延迟扩展后使用
!变量名!的格式访问变量,保证每次循环都能读取到最新的变量值 - 替换逻辑
!fp:\=\\!会将路径中所有的单个\替换为转义后的\\,外层的双引号保证带空格的路径可以被正确识别 - 生成文件后你可以直接执行原定的javac命令:
javac -d \classes @sources.txt
内容的提问来源于stack exchange,提问作者Thomas Stokes
相关产品推荐
相关产品推荐

