You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让WinRAR CLI命令执行完成后再返回命令提示符?

如何让WinRAR CLI命令执行完成后再返回命令提示符?

我太懂你的困扰了——用WinRAR的CLI命令压缩大文件夹时,命令提示符直接就回来了,导致后续脚本步骤提前跑起来,完全没等压缩完成对吧?这其实是因为你用的winrar.exe本质是带GUI的程序,哪怕用命令行调用,它也会启动一个后台的GUI进程干活,而命令行里的winrar.exe进程会直接退出,所以提示符就提前回来了。

给你两个靠谱的解决办法:

方法一:用纯命令行版本的rar.exe

WinRAR安装目录里其实自带了纯命令行工具rar.exe,它默认就是阻塞执行的——必须等压缩完成才会返回命令提示符,而且还会在控制台显示实时进度(和7z的效果一模一样)。

命令格式和你之前的差不多,只是把winrar.exe换成rar.exe就行:

rar.exe a $output_path $input_path

要是找不到rar.exe,它一般在C:\Program Files\WinRAR\目录下,你可以把这个路径加到系统环境变量里,或者直接用完整路径调用,比如:

& "C:\Program Files\WinRAR\rar.exe" a $output_path $input_path

方法二:用PowerShell的Start-Process强制等待

如果你一定要用winrar.exe,可以借助PowerShell的Start-Process命令,加上-Wait参数让脚本强制等待WinRAR进程完成:

Start-Process -FilePath "winrar.exe" -ArgumentList "a $output_path $input_path" -Wait -NoNewWindow

这里的-NoNewWindow是让WinRAR在当前控制台窗口执行(不会弹出单独的GUI窗口),-Wait就是告诉PowerShell必须等这个进程结束再往下走。不过这种方式可能看不到实时进度,要是你需要盯着进度看的话,还是方法一更合适。

另外提醒一下:之前你用的-ibck参数是让WinRAR在后台跑GUI进程,所以肯定会直接返回提示符,以后如果要等完成就别加这个参数啦。

备注:内容来源于stack exchange,提问作者ZYinMD

火山引擎 最新活动