首页 > 解决方案 > 如何在文件路径中运行带有空格的 bat 文件?

问题描述

我想在 Windows 机器上运行一个用于从 Kotlin 程序中将 sass 编译为 css 的 bat 文件。Runtime.exec在我切换到用户名中有空格的 Windows 帐户之前,我一直在使用所有东西。从我读到的,我读到使用ProcessBuilder会使这更容易。似乎即使ProcessBuilder我仍然无法让它工作,无论我尝试什么。

到目前为止,这是我的代码

val commands = mutableListOf(
                "cmd",
                "/c",
                "C:\\Users\\John Doe\\VCS\\test\\tools\\sass\\windows\\dart-sass\\sass.bat",
                "--no-source-map",
                "C:\\Users\\John Doe\\VCS\\test\\src\\main\\sass\\global.scss",
                "global.css"
        )

val processBuilder = ProcessBuilder(commands)
val process = processBuilder.start()

...

我得到的错误是'C:\Users\John' is not recognized as an internal or external command, operable program or batch file.如果我将带有空格的字符串用\".

标签: kotlincmdprocessbuilder

解决方案


如果我没记错的话,所有名称中有空格的 Windows 文件和文件夹都有一个匹配的旧 8.3 格式的短名称,用波浪号 (~) 和数字替换额外的空格和其他字符。

那么无论返回 .bat 和 .sscs 文件的路径,都可以返回该格式的完整文件名吗?

我承认,并没有解决问题,而是避免了问题。

也意味着当有人在文件名中添加空格时,您不会被淘汰(好吧,不太可能,但从一开始就更好地处理)。

考虑一下这个超级用户线程上前 2 个答案的内容


推荐阅读