如何在使用 wzzip.exe 压缩时设置低优先级

如何在使用 wzzip.exe 压缩时设置低优先级

我批量处理了这个问题,代码无需 就可以运行start /low。压缩时wzzipCPU 占用 100%,所有其他程序都挂起。

因此,为了解决这个问题,我一直尝试设置亲和力或优先级,但start /low插入后我仍然收到错误:

Windows cannot find '-ez'

任何帮助都将不胜感激。

for /f "tokens=*" %%a in ('type "%Path%\dirlist.txt"') do (
start /low "c:\program files\winzip\wzzip" -ez -md "%%a.zipx" "%%a"
CLS

感谢您的反馈。有了它,我能够让它以低优先级运行。

start "" /b /low /wait "c:\program files\winzip\wzzip.exe" -ez -md "%%~a.zipx" "%%~a"

使用/wait命令非常重要,否则如果您使用 for 循环,程序 wzzip.exe 会一次运行所有实例,而不是运行一个实例然后等待它完成后再运行另一个。

此外,我使用以下方法将 CPU 核心使用率更改为 1/affinity 0x1

start "" /b /low /affinity 0x1 /wait "c:\program files\winzip\wzzip.exe" -ez -md "%%~a.zipx" "%%~a"

谢谢大家的帮助。

答案1

@echo off 

set "_wzzip="c:\program files\winzip\wzzip.exe"
for /f tokens^=* %%a in ('type "d:\Folder\Subfolder\dirlist.txt"
')do start "" /b /low /wait /affinity 0x1 "!_wzzip!" -ez -md "%%~a.zipx" "%%~a" && (
"%__APPDIR__%wbem\wmic.exe" process where 'name="wzzip.exe"' CALL setpriority "idle")

关于: Windows 找不到-ez,尝试添加"".exe

start "" /b /wait /low /affinity 0x1 "!_wzzip!" -ez -md "%%~a.zipx" "%%~a" 

您可以%path%用完整文件替换变量dirlist.txt

for /f tokens^=* %%a in ('type "%path%\dirlist.txt"')

for /f tokens^=* %%a in ('type "d:\Folder\Subfolder\dirlist.txt"')

通过添加相关参数/标志来启动您的命令,以便它在后台启动:

start "" /b /wait /low /affinity 0x1 "!_wzzip!" -ez -md "%%~a.zipx" "%%~a" 

在后台运行上述命令后,调用wmic控制台将进程设置wzzip.exeidle

"%__APPDIR__%wbem\wmic.exe" process where 'name=wzzip.exe"' CALL setpriority "idle"

[√]寻找

[√]条件执行 || && ...

[√]Microsoft 文档/在线中的 wmic

[√]wmic setpriority “idle” 来源于@Bobs 问题和答案

相关内容