Command line 在cmd.exe(Windows XP)中使用/affinity启动可执行文件

Command line 在cmd.exe(Windows XP)中使用/affinity启动可执行文件,command-line,windows-xp,affinity,Command Line,Windows Xp,Affinity,我有一个我正在尝试使用的程序,它经常崩溃,其中一个修复方法是将它设置为只使用一个处理器。 我可以通过任务管理器手动轻松完成这项工作,但我更喜欢双击快捷方式的解决方案 我尝试使用以下代码行制作at.bat文件: C:\Windows\System32\cmd.exe/C start/affinity 1 KSP.exe 然而,它只是拒绝运行。删除/C开关只会启动cmdbox 尝试在cmdbox中键入/affinity 1 KSP.exe(谢天谢地,cmdbox以.bat文件所在的目录开始,该目录与

我有一个我正在尝试使用的程序,它经常崩溃,其中一个修复方法是将它设置为只使用一个处理器。 我可以通过任务管理器手动轻松完成这项工作,但我更喜欢双击快捷方式的解决方案

我尝试使用以下代码行制作at.bat文件: C:\Windows\System32\cmd.exe/C start/affinity 1 KSP.exe

然而,它只是拒绝运行。删除/C开关只会启动cmdbox

尝试在cmdbox中键入/affinity 1 KSP.exe(谢天谢地,cmdbox以.bat文件所在的目录开始,该目录与.exe所在的文件夹相同,因此没有问题)只会出现以下错误:


无效开关-“/affinity”。

我自己在旧版Win XP 32位装备上运行KSP时遇到了同样的问题。cmd.exe在Vista、IIRC之前未收到/affinity开关

我意识到OP已经有一年多的历史了,但是对于一些用户来说,它目前仍然是一个问题。解决方案是使用Sysinternals中的psexec.exe代替cmd.exe,可以在以下位置找到:

Microsoft的Sysinternal的psexec的-a标志可以在Windows XP上设置处理器相关性:

Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i
[session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]
 -a         Separate processors on which the application can run with
            commas where 1 is the lowest numbered CPU. For example,
            to run the application on CPU 2 and CPU 4, enter:
            "-a 2,4"
例如:

psexec -a 2 cmd /c "E:Games\KSP\KSP.exe"
将在第二个堆芯上运行KSP。(任务管理器中的核心1)

只需更正系统的路径,并将其放在.bat或快捷方式的目标字段中


另外,您需要将PsTools(或者简单地说PsExec.exe)解压缩到C:\Windows或系统路径中的其他文件夹中,或者将其放入KSP根目录中

首先要知道,您必须为您的程序提供管理员权限,可以通过right clic和sart作为admin,也可以通过创建任务

因此,在使用这些管理员权限启动cmd后,可以通过以下方式启动程序:

<code>`start /AFFINITY 1 /B notepad.exe`</code>
使用procexp,并在记事本进程上右键单击+设置关联,您将看到它只使用处理器0

做:

<code>`start /AFFINITY 1 /B notepad.exe`</code>
您将看到它在处理器2上运行

那么,如果您希望您的进程在一半的核心上运行

这样做:

<code>`start /AFFINITY AA /B notepad.exe`</code>
在octo内核上,它将在处理器1、3、5、7上运行

  • /AA代表一半的磁芯,奇数,(1,3,5,7)
  • /A表示芯的夸脱数,奇数,(1,3)
  • /F代表上半场,(0,1,2,3)
  • /FF代表所有人,(0,1,2,3,4,5,6,7)
问候