- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想从 MATLAB 在 dos 中执行一个批处理文件,并立即将控制权返回给 MATLAB。但是,我想在不打开 dos 窗口的情况下执行此操作(或者,至少,让 dos 窗口在最后消失)。
如果我这样格式化我的命令...
s = dos('batchfilename.bat');
然后MATLAB在不打开dos窗口的情况下运行批处理文件,但是MATLAB代码必须等待返回。
如果我这样格式化我的命令...
s = dos('batchfilename.bat &');
控制立即返回给 MATLAB,但它也显示我不想要的 dos 窗口。 (当你这样做时,也很难检测批处理文件何时“完成”)
如有任何帮助,我们将不胜感激。
最佳答案
使用 Matlab 的外部接口(interface)支持来访问较低级别语言的过程控制功能。
使用 .NET System.Diagnostics.Process 类。它会让您异步运行一个进程,检查它何时退出,并收集退出代码。您可以选择隐藏其窗口或使其可见以进行调试。
您可以直接从 M 代码调用 .NET 类。
function launch_a_bat_file()
%//LAUNCH_A_BAT_FYLE Run a bat file with asynchronous process control
batFile = 'c:\temp\example.bat';
startInfo = System.Diagnostics.ProcessStartInfo('cmd.exe', sprintf('/c "%s"', batFile));
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; %// if you want it invisible
proc = System.Diagnostics.Process.Start(startInfo);
if isempty(proc)
error('Failed to launch process');
end
while true
if proc.HasExited
fprintf('\nProcess exited with status %d\n', proc.ExitCode);
break
end
fprintf('.');
pause(.1);
end
.NET 版本需要足够新的 Matlab 才能支持 .NET。这是旧版 Matlab 的基于 Java 的版本,就像 OP 一样。稍作修改后也应该可以在非 Windows 系统上工作。
function launch_a_bat_file_with_java
%LAUNCH_A_BAT_FILE_WITH_JAVA Java-based version for old Matlab versions
batFile = 'c:\temp\example.bat';
cmd = sprintf('cmd.exe /c "%s"', batFile);
runtime = java.lang.Runtime.getRuntime();
proc = runtime.exec(cmd);
while true
try
exitCode = proc.exitValue();
fprintf('\nProcess exited with status %d\n', exitCode);
break;
catch
err = lasterror(); % old syntax for compatibility
if strfind(err.message, 'process has not exited')
fprintf('.');
pause(.1);
else
rethrow(err);
end
end
end
您可能需要在 Java 版本中摆弄 I/O 以避免挂起已启动的进程; demarcmj 指出您需要读取并刷新进程的输入流以获取 stdout 以避免它填满。
关于matlab - 如何从 MATLAB 执行 dos 命令并立即将控制权返回给 MATLAB(不生成 dos 窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931000/
我是一个非常基础的 git 用户;我基本上只使用命令 git add -a(修改后添加文件)然后 git commit -m "what I did" 然后 git push (将其推送到我的服务器)
我有两个用户选择的日期:开始日期和结束日期。它们是 NSDate 实例,我必须将它们作为 NSNumber 的参数发送。如何以秒为单位将它们转换为 NSNumber? 最佳答案 使用下面的代码: N
我正在构建一个应用程序,用户可以在其中无限次操作 svg 对象(例如图像),即旋转和缩放它们。我使用 Raphael.js 来处理 SVG。 如何在应用新转换之前将对象“重置”到其初始状态,以便新转换
我想在调用我的应用程序中的函数时进行记录。有没有一种方法可以监听调用的函数并在此类事件上运行代码? 如果是这样,我从哪里开始研究如何做到这一点? 最佳答案 只需将日志记录直接插入到您想要的位置即可。
void main() { char c; int op; int a=10,b=20,sum; scanf("%c",&c); if(c=='+')
我正在尝试使用 H2 进行集成测试。我希望 H2 数据库在每次测试之间重置为我的 data.sql 。但在建议的解决方案中,我还没有发现有效; @Transactional 和 @DirtiesCon
这个问题在这里已经有了答案: Tokenizing a String but ignoring delimiters within quotes (13 个回答) 关闭6年前。 如何将String按空
我在我的项目中有一个要求,我们有一些输入框,我们应该输入时间。 时间可以以任何格式输入,即 12:30a 或 1230 或 1430 或 14:30 . 以1230 或 1430 格式输入的计时问题是
我对 Jquery UI Resizable 功能有疑问。 我正在使用 Jquery resizable 将 div 调整为不同的宽度和高度。它运行良好,但是当我尝试将高度降低到一个非常低的数字时,它
我刚刚读了an article其中指出: Internet domain addresses opened up to wave of new suffixes Internet naming boa
我有一个对象列表,比方说 List类 Example 有一个成员 a,它是一个字符串: class Example { String a; String b; } 现在我想从List得
假设我有一个只有两列的表格:姓名 和心情。一行包含一个人的名字和他们的心情,如果他们有多种心情,那么多行存储在数据库中。 例如,在数据库中是约翰,他很高兴、兴奋和自豪。 这表示为 John Happy
对于从 (-x 或 0) -> 无穷大的积分,我在 MATLAB 的 quadgk 和 Python 的 quad 例程之间得到不一致的结果。我相信 MATLAB 版本是正确的(基于将 flag 参数
我非常想知道如何修改现有的 LINQ 函数以添加 Func TResult到函数签名,即允许它使用选择器,如 (o => o.CustomField) . 例如,在 C# 中,我可以使用 .IsDis
我是一名优秀的程序员,十分优秀!