我批量处理了这个问题,代码无需 就可以运行start /low
。压缩时wzzip
CPU 占用 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.exe
为idle
"%__APPDIR__%wbem\wmic.exe" process where 'name=wzzip.exe"' CALL setpriority "idle"
[√]寻找