首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用batch递归编译路径中的空格?

使用batch递归编译路径中的空格?
EN

Stack Overflow用户
提问于 2015-09-12 06:02:13
回答 1查看 57关注 0票数 1

我目前有一个批处理脚本,如下所示:

代码语言:javascript
复制
@echo off

dir /s /B *.java > sources.txt
javac -d bin @sources.txt

pause

这在没有空格的目录中有效,但现在当它们有空格时。

我尝试这样做,将所有条目都放在引号中:

代码语言:javascript
复制
(for /f "delims=" %%f in ('dir /s /B *.java') do @echo "%%f") > sources.txt

但是,只要\出现在路径中,就会产生一个错误。我需要一种方法来转义所有的空格和斜杠,并将其写入sources.txt

EN

回答 1

Stack Overflow用户

发布于 2015-09-12 08:30:53

这应该是可行的。

代码语言:javascript
复制
@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:\=\\!"也是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32532769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档