我正在构建一个需要执行动态构建的终端命令跨平台的解决方案。这是在MacOS命令(实际上是单个文本行,改变了可读性):如何在不出现错误的情况下运行多个`cmd.exe/c`命令?
cat "/path/to/file1.txt" "/path/to/file2.txt" > "/path/to/output.txt" ;
rm "/path/to/file1.txt" ; rm "/path/to/file2.txt"
了一些研究之后,在Windows上,相当于将是:
cmd.exe /c type "C:/path/to/file1.txt" "C:/path/to/file2.txt" > "C:/path/to/output.txt" ;
del "C:/path/to/file1.txt" ; del "C:/path/to/file2.txt"
现在,似乎工作时,我手动在PowerShell中,但我得到的错误。请注意,文件的串联和删除似乎工作,但我发现了以下错误:
The system cannot find the file specified.
Error occurred while processing C:/path/to/file1.txt
The system cannot find the file specified.
Error occurred while processing C:/path/to/file2.txt
当命令的Windows版本的动态构建和执行,串联工作,但该文件中删除该信息不,我的猜测是因为这些错误。
为了像macOS版本一样工作,这需要什么Windows版本?
(在你想知道的情况下,这是使用来自BaseElements插件BE_ExecuteSystemCommand
功能的FileMaker数据库中。)
“*当命令的Windows版本是动态生成并执行*” - 它是如何动态地构建和执行? (以及为什么在PowerShell中输入命令提示符命令?) – TessellatingHeckler
我使用FileMaker的字符串操作功能构建。上面的命令('cmd.exe/c ...')在FileMaker中执行时会连接文件,但不会删除它们。当完全相同的字符串被粘贴到PowerShell中(至于为什么我使用它来测试命令,如果有的话会欢迎更好的方法),但它有效,但有错误。它使用上面提到的BE_ExecuteSystemCommand函数在macOS和Windows上执行。 – Chuck
打开命令提示符并键入'type asdf; asdf' - 你看到四个同样的错误找不到/错误发生的输出。分号在bash和PowerShell中结束,但我认为它们不在cmd.exe中。从你的链接文档中,BE_ExecuteSystemCommand就像在命令行中输入一样,所以你不需要'cmd/c'部分。你可以用三个不同的电话吗?你可以在字符串中加入换行符\ r \ n'字符吗? – TessellatingHeckler