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

时间:2013-03-13 03:44:36

标签: command-line windows-xp affinity

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

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

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

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

无效的开关 - “/ affinity”。

2 个答案:

答案 0 :(得分:1)

我在尝试在较旧的Win XP 32位装备上运行KSP时遇到了同样的问题。在Vista,IIRC之前,cmd.exe没有收到/ affinity开关。

我意识到OP已经超过一年了,但对于一些用户来说,它仍然是一个问题。解决方案是使用来自Sysinternals的psexec.exe代替cmd.exe,可在此处找到:

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

微软的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或快捷方式的Target字段中。

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

答案 1 :(得分:0)

首先请注意,您必须为您的程序提供管理员权限,可以是右侧clic,也可以是sart作为管理员,或者通过创建任务。

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

<code>`start /AFFINITY 1 /B notepad.exe`</code>

使用procexp,并在记事本进程上右击+ set affinity,您将看到它只使用处理器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)

问候。