[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]请教!如果用批处理更改某进程的CPU关联和优先级?

本帖最后由 avi33 于 2015-9-13 00:39 编辑

大大们,请教一下

怎么用批处理更改某个进程的CPU关联?
比如我想让红警2的程序game.exe和ra2.exe只关联CPU0,请问怎么写?

还有修改这两个进程的优先级为“实时”!

谢谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 pcl_test 于 2015-9-12 23:41 编辑

设置进程优先级为“实时”
  1. @echo off
  2. for %%a in ("game.exe" "ra2.exe") do wmic process where name="%%~a" call setpriority 256
  3. pause
  4. ::64 Idle 优先级–低
  5. ::16384 Below Normal 优先级–低于标准
  6. ::32 Normal 优先级–标准
  7. ::32768 Above Normal 优先级–高于标准
  8. ::128 High Priority 优先级–高
  9. ::256 Real Time 优先级–实时
复制代码
1

评分人数

    • avi33: 乐于助人技术 + 1

TOP

谢谢,请问指定CPU0或CPU1运行,这个可以实现吗?

TOP

如果批处理不能实现,其他的能实现吗?非常感谢

TOP

TOP

谢谢!:)

TOP

本帖最后由 pcl_test 于 2015-9-13 13:54 编辑
  1. @echo off 2>nul 3>nul
  2. ::需要安装.Net Framework 2.0及以上
  3. set "netpath=%systemroot%\Microsoft.NET\Framework"
  4. for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do (
  5.     if exist "%netpath%\%%a\csc.exe" (
  6.         set "cscpath=%netpath%\%%a\csc.exe"
  7.         goto :0
  8.     )
  9. )
  10. :0
  11. >"%tmp%\$" more +15 "%~f0"
  12. "%cscpath%" /out:"%tmp%\$SetAffinity.exe" "%tmp%\$"
  13. "%tmp%\$SetAffinity.exe"
  14. pause&exit
  15. ::C# codes 参考http://caoshugui.blog.163.com/blog/static/25375653200910115329888/
  16. using System;
  17. using System.Diagnostics;
  18. namespace SetAffinity{
  19.     class Myclass{
  20.         static void Main(string[] args){
  21.             //设置需修改CPU相关性的进程名
  22.             String[] proname = new String[]{"game","ra2"};
  23.             for (int i=0; i<proname.Length; i++){
  24.                 Process pro = Process.GetProcessesByName(proname[i])[0];
  25.                 //设置CPU相关性为cpu0
  26.                 pro.ProcessorAffinity = (System.IntPtr)1;
  27.             }
  28.         }
  29.     }
  30. }
复制代码

TOP

返回列表