我目前有一个像这样的批处理脚本:
@echo off
dir /s /B *.java > sources.txt
javac -d bin @sources.txt
pause
这适用于没有空格的目录,但现在当有空格时。
我尝试了类似的方法将所有条目放在引号中:
(for /f "delims=" %%f in ('dir /s /B *.java') do @echo "%%f") > sources.txt
但是每当 \
出现在路径中时就会出现错误。我需要一种方法来转义所有空格和斜杠并将其写入 sources.txt
。
最佳答案
这应该有效。
@echo off
setlocal enabledelayedexpansion
(
for /f "delims=" %%f in ('dir /s /B /A-D *.java') do (
set "li=%%~f"
set "li=!li: =^ !"
set "li=!li:\=\\!"
@echo "!li!"
)
)>sources.txt
echo javac -d bin @sources.txt
endlocal
EXIT /B 0
根据How to run javac with paths as argument that contain white spaces?
你必须使用像 /
这样的unix路径而不是\
因此,将 set "li=!li:\=\\!"
替换为 set "li=!li:\=/!"
应该也可以。
关于java - 使用批处理递归编译路径中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532769/