我目前有一个批处理脚本,如下所示:
@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。
发布于 2015-09-12 08:30:53
这应该是可行的。
@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:\=\\!"也是可行的。
https://stackoverflow.com/questions/32532769
复制相似问题