最终,我试图制作一个批处理文件,以使用“ 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
它没有按照我想要的方式工作。 sources.txt完全为空。我知道是因为“ @set”,但这意味着@echo无法正常工作。
当我在cmd中测试第一行时,我发现@set还将分号后面的所有内容都设置为变量。如何获得@set命令的断点?
答案 0 :(得分:0)
您不能对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