相关文章推荐
咆哮的黄豆  ·  Git 本地/远程 ...·  3 月前    · 
谈吐大方的鸵鸟  ·  Powershell/Vba ...·  1 年前    · 
有胆有识的海龟  ·  强制刷新浏览器 ...·  1 年前    · 
需求:之前公司网管要核查每个人的电脑配置 信息 ,所以要我写个 bat 文件,能够直接运行 bat 程序并且将每个人的电脑硬件 信息 生成一个txt文件返回,所以就有了下面的代码。 复制代码修改后缀为 bat 文件,双击即可生成电脑硬件 信息 文件。 @echo off color 0a title 硬件检测 mode con cols=90 sc config winmgmt start= auto >nul 2<&1 net start winmgmt 2 setlocal .
记得以前用过ShellExecute运行过批处理文件,不过控制起来不够细致。今天在做程序的时候发现CreateProcess也能实现对批处理文件的启动,或是直接运行批处理 命令 。 以下代码可以启动cmd文件: BOOL CautobuiltView::RunCmdFile(LPCTSTR lpstrCmd) PROCESS_INFORMATION pi; STARTUPINFO ...
有时候在windows下运行一些cmd 命令 或者 命令 文件:批处理 命令 文件如. bat 、.cmd文件、.exe文件时cmd窗口会一闪而退,里面会有一些报错原因的提示,我们很想看到,以便针对性的解决问题。这时候可想到的就是 输出 报错到日志文件以便存留查看或者用录屏软件用高帧率记下cmd窗口闪退一刹那里面 显示 的报错 信息 。 现在,我只讲 输出 到日志的方法。 情景一:直接在cmd中运行 命令 闪退。 解决方法:在...
exe同一目录下建立txt,内容如下: @echo off start /wait TAppDecoder.exe -b D:\1080p_300.hm10 -o D:\output.yuv 扩展名改为 bat 。 WCHAR szAppPath[1024] = { 0 } ; if( GetModuleFileNameW(NULL,szAppPath,1023 ) == 0 ) return; // 提取目录和文件名 WCHAR wszFileName[MAX_PATH] = { 0 }; LPWSTR pwszPos = wcsrchr( szAppPath, L'\\' );
Delphi是一款流行的Windows应用程序开发工具,它主要用于创建桌面应用和 数据库 驱动程序。要从Delphi调用 BAT (批处理)文件并获取其 输出 ,你可以通过以下步骤实现: 1. 使用`CreateProcess`函数:Delphi提供了一个名为`CreateProcess`的API调用来运行外部 命令 。首先,你需要包含`Winapi.Process`单元。 ```pascal Windows, Process; 2. 创建一个过程来 执行 BAT 文件,并捕获 输出 : ```pascal ProcInfo: TProcessInformation; hOutPipe, hErrPipe: Integer; StartupInfo,.dwCreationFlags: TStartupInfo; OutputData, ErrorData: array[0..MAX_PATH] of Char; begin // 初始化启动 信息 结构 FillChar(StartupInfo, SizeOf(TStartupInfo), 0); StartupInfo.cb = SizeOf(TStartupInfo); StartupInfo.lpReserved = nil; StartupInfo.lpDesktop = nil; StartupInfo.lpTitle = nil; StartupInfo.dwFlags = STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; // 获取标准 输出 和错误管道句柄 if CreatePipe(hOutPipe, @OutputData[0], @StartupInfo.hStdOutput, ProcInfo.StdOutputSize) then Inc(ProcInfo.StdOutputHandle, hOutPipe) raise Exception.Create('Failed to create output pipe'); if CreatePipe(hErrPipe, @ErrorData[0], @StartupInfo.hStdError, ProcInfo.StdErrorSize) then Inc(ProcInfo.StdErrorHandle, hErrPipe) raise Exception.Create('Failed to create error pipe'); // 设置进程创建标志 dwCreationFlags := CREATE_NO_WINDOW; // 不 显示 新窗口 // 指定要运行的 BAT 文件路径及 命令 行参数 Result := CreateProcess(nil, PChar('cmd.exe /c your_ bat _file. bat '), nil, nil, False, dwCreationFlags, nil, nil, StartupInfo, ProcInfo); if Result <> 0 then begin // 等待进程完成 WaitForSingleObject(ProcInfo.hProcess, INFINITE); // 读取并关闭 输出 管道 if not CloseHandle(ProcInfo.hProcess) then ShowMessage('Failed to close process handle'); // 读取 输出 结果 if not ReadFile(hOutPipe, @OutputData[0], ProcInfo.StdOutputSize, @ProcInfo.StdOutputWritten, nil) then ShowMessage('Failed to read from output pipe'); // 读取错误结果 if not ReadFile(hErrPipe, @ErrorData[0], ProcInfo.StdErrorSize, @ProcInfo.StdErrorWritten, nil) then ShowMessage('Failed to read from error pipe'); CloseHandle(hOutPipe); // 关闭 输出 管 CloseHandle(hErrPipe); // 关闭错误管 // 输出 结果 ShowMessage('Output: ' + StringOfChar('\r\n', OutputData)); ShowMessage('Error: ' + StringOfChar('\r\n', ErrorData)); ShowMessage('Failed to start the bat ch file'); 这段代码将启动一个新的CMD进程来运行指定的 BAT 文件,然后读取它的 输出 和错误到字符串中。