如何在Windows批处理中检测.gz与.mps.gz文件后缀
批处理脚本判断文件后缀问题
需求
我希望运行如下命令:
C:\> mybatch.bat somefile.gz
或是:
C:\> mybatch.bat somefile.mps.gz
需要在批处理脚本内判断传入的参数是否以.gz或.mps.gz结尾。
无效写法
以下写法无法生效:
if findstr ".mps.gz" %1 ( echo ".mps.gz file" ) else ( echo ".gz file" )
改进过程
第一次改进方案
使用findstr结合错误码判断的实现:
set ZIP="C:\Program Files\7-Zip\7zFM.exe" echo %1|findstr /i /L /e /C:".mps.gz">nul&if errorlevel 1 ( echo ".gz only %1" %ZIP% %1 ) else ( echo ".mps.gz %1" call freempsgz2lpt.bat %1 ) pause -1
该方案在命令行中运行正常,但将批处理与.gz后缀关联后,在Windows资源管理器中双击文件时无法识别.mps.gz后缀。
第二次调整
修改代码为:
echo %1|findstr /i /L /e /C:".mps.gz""">nul&if errorlevel 1 ( ...
调整后,脚本在Windows资源管理器中双击可正常运行,但命令行环境下无法运行,此结果可接受。
内容的提问来源于stack exchange,提问作者Michael Hecht
相关产品推荐
相关产品推荐

