当前位置: 首页 > 面试题库 >

文件名包含空格时,运行时exec()不运行命令

邵伟泽
2023-03-14
问题内容

我是Java的新手,因此尝试将我的项目之一从C转换为Java,以便将其与另一个Java程序结合在一起。使用Runtime.exec()时,很难获得正确的结果。我有以下程序段,而Java将忽略以处理给定的命令。

command1 = "mv output/tsk/dir1/metabolic\\ waste.txt output/converted/file16.txt";                                               
r2 = Runtime.getRuntime();
p2 = r2.exec(command1);
p2.waitFor();

这里的问题是文件名“ metabolic
waste.txt”。没有空间时,相同的命令起作用。我知道我必须将转义字符用于空间,并且做到了。我正在研究Ubuntu btw。

我也尝试使用

String[] command1 = new String[] {"mv output/tsk/dir1/metabolic\ waste.txt", "output/converted/file16.txt";

但这没用。

ps给定的代码只是一个例子。我不仅使用linux
mv命令。我还运行了一些命令行工具,例如pdf2txt。如果文件名中有空格,我仍然会遇到运行命令的相同问题。

已解决:我已经解决了我的问题。我不得不删除转义符并使用字符串数组,这很荒谬。因此,没有逃脱字符的空间。以下代码仅适用于本示例,并且适用于更一般的示例。

source_filepath = "output/tsk/dir1/metabolic waste.txt";
dest_filepath = "output/converted/file16.txt";
String[] str2= {"mv", source_filepath, dest_filepath};
r2 = Runtime.getRuntime().exec(str2);
p2.waitFor();

问题答案:

您必须进行转义,或者将路径用引号引起来:

String[] command1 = new String[] {"mv output/tsk/dir1/metabolic\\ waste.txt", "output/converted/file16.txt"};
String[] command1 = new String[] {"mv \"output/tsk/dir1/metabolic waste.txt\"", "output/converted/file16.txt"};

您必须使用,\\因为java也\用作转义字符,因此"\\"实际上只包含一个\



 类似资料:
  • cmd=powershell。exe$passwd=convertto-securestring-AsPlainText-Force-String-abc$cred=新对象-类型名System.Management.Automation。PSCredential-参数列表“xyz”,$passwd$session=new-PSSession-Computer-mobilesaucelabs.wes

  • 本文向大家介绍PowerShell命令中包含空格如何运行?,包括了PowerShell命令中包含空格如何运行?的使用技巧和注意事项,需要的朋友参考一下 在PowerShell中,可以直接运行命令。包括.exe结尾的、.com结尾的可执行程序,包括.bat结尾的、.cmd结尾的批处理程序,还有.vbs结尾的、.ps1结尾的脚本程序。均可以使用如下方式运行程序: <程序文件名>.<后缀> [参数列表]

  • 问题内容: 我在Ubuntu环境中使用jar执行openSSL命令时遇到问题。我的结论是,发生这种情况是由于文件路径中的空间正在作为命令中的参数(例如,以下命令中的SHA 256)传递。我已经使用了进程和类来执行相同的操作: 首先 : 第二 : 最终命令如下所示,如果在命令提示符下单独执行,则工作正常,但使用Java代码执行时失败: 我也使用以下方法解决了此问题,但是没有按预期工作: 请查看并帮助

  • 我有一个命令,我需要在java中按照以下方式运行: 当路径没有空格时,这个命令可以正常工作,但是当我有空格时,我似乎无法让它工作。我尝试了以下方法,运行Java1.7 以及;以及 但两人似乎都没有采取任何行动。有没有想过我做错了什么??

  • 下面的代码在Eclipse中运行良好(两种图像处理方法都可以)。但是当导出为可运行的JAR文件时,双击。JAR,什么都没发生。如果我注释掉代码的图像部分,则。JAR在导出和框架构建时运行良好。因此,图像的获取似乎导致了错误。JAR可能会失败。 我有草莓。jpg文件位于“C:\Users\sean\workspace\myApps\bin\testing”中,您能否告知问题是否与我的代码有关? (此

  • 问题内容: 我想从Android应用程序执行ffmpeg,非常像这里所述:将FFmpeg与Android-NDK结合使用。 执行以下命令可以正常工作: 要么 但是,当输入或输出文件名包含空格时,ffmpeg失败,并显示“找不到文件”错误: FFMPEG对于包含空格的文件也失败,但引用如下: 如何正确将包含空格的文件名传递给ffmpeg命令? 问候, 问题答案: 我终于明白了。我忘记了一种可能性,而