【发布时间】:2022-11-21 16:56:46
【问题描述】:
我想运行这样的东西
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"
)
这样做的正确方法是什么?
编辑 1(来自https://stackoverflow.com/users/2128947/magoo):
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 扩展名。从命令行运行良好。
编辑 2: 我将提案更改为
echo %1|findstr /i /L /e /C:".mps.gz""">nul&if errorlevel 1 ( ...
现在它适用于 Windows 资源管理器中的文件关联,但不适用于命令行。这对我来说没问题。
【问题讨论】:
-
echo %1|findstr /i /L /e /C:".mps.gz">nul&if errorlevel 1 (echo does not end .mps.gz) else (echo ends mps.gz) -
作品!我希望它看起来不像我的代码 sn-p 那样神秘和清晰,但这似乎无法通过 Windows 批处理 :-( ... 谢谢。请发布为解决方案以供我标记。
标签: windows batch-file pattern-matching