>最终,我正在尝试制作一个批处理文件,以使用"dir"自动生成Java源文件夹中的源文件,将单反斜杠替换为双反斜杠,并在dir的每个输出的开头和结尾添加双引号。
请不要问为什么我不使用 IDE 或构建工具,这不是这里的重点。
(for /f "delims=" %%f in ('dir /b /s /c *.java') do @("@set var=%%f:=\%%"; @echo %var%)) > sources.txt
javac -cp ".apis*;." -d "." @sources.txt
它没有按照我想要的方式工作。 来源.txt完全是空的。我知道这是因为"@set",但这意味着@echo不起作用。
当我在cmd中测试第一行时,我发现@set还将分号后面的所有内容都设置为变量中。如何获取 @set 命令的断点?
不能对FOR
元变量执行字符串操作。 必须先将其分配给环境变量。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(for /f "delims=" %%f in ('dir /b /s /c *.java') do (
set "var=%%f"
echo !var:=\!
))>sources.txt
javac -cp ".apis*;." -d "." @sources.txt