java - 使用批处理递归编译路径中的空格?

标签 java batch-file javac

我目前有一个像这样的批处理脚本:

@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/

相关文章:

java 从另一个线程更新 UI 组件

linux - 如何在 xmgrace 中制作正确的动画图形?

node.js - 使用批处理文件一次运行多个NodeJS项目

java - 如何使用 bash 脚本编译使用 jar 文件的多打包 java 项目

javac - 为什么 Java lambda 在实例字段初始化方面与嵌套类的处理方式不同?

java - 为什么实现这个通用接口(interface)会创建一个不明确的引用?

java - 无法使用 Thread.start() 启动 JavaFX 任务

java - 你如何在Java中找到数组中所有数字的总和?

java - 使用 Java 以编程方式将数据从 Google Cloud Storage 加载到 Bigquery 的选项?

html - 使用批处理生成 html .. 转义引号