我目前有一个像这样的批处理脚本:
@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
。
答案 0 :(得分:2)
这应该有用。
@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:\=/!"
也应该有用。