cmd命令 根据文件名 执行最高版本的cmd文件

参考:

官网文档

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/findstr

背景:

1.在编写脚本文件时, 习惯性已升级版本的方式, 保持一个增量迭代

如:  一开始只有1个功能就是  xxx_v1.cmd,  加了功能就是 xxx_v2.cmd

至于为什么不直接在源文件上写, 有时候越高的版本代码量越多, 想回过头看看一开始的版本

问题:

所以遇到的问题就是,  如何实现  自动选择 xxx_v2.cmd 进行自动执行

否则每次都要去选择对应的版本文件

实现思路:

1.用dir /b 打印出目录下的所有文件名

2.用findstr /C:"搜索的关键字"   或者  findstr /V  "排除的关键字" 进行过滤

3.用for循环, 版本越高的都是在最后一行

4.使用start 命令 执行 cmd文件

脚本正文:

:: Date:   2022-09-09
:: Version v1.3
::
::启动 最高版本的 cmd文件
::
::
@echo off

echo .....................................................................
echo .....................................................................
echo .....................................................................
echo "start..."


:: 保存当前cmd 位置
set current_path=%cd%

:: 脚本文件的前缀
set file_prix=xxx_script
:: 匹配关键字的模式, 根据情况调整
:: 特定的格式:  xxx_script v1.cmd   xxx_script v2.cmd
set query_name_pattern="%file_prix% v"

:: 临时文件位置
REM set tmp_file=c:\tmp.txt
set tmp_file=%cd%\tmp_%file_prix%.txt

echo current path:  %current_path%
echo tmp_file:    %tmp_file%
echo file_prix: %file_prix%
echo query_name_pattern: %query_name_pattern%
echo ======================= query file name by string: %file_prix%


:: findstr的搜索模式 /C:   参考帮助手册/官方文档
:: 方式1: 连续排除(如 排除 带+加号的,  带_下划线的)
REM dir /b | findstr /C:%query_name_pattern% |findstr /V "+"   |findstr /V "_" > %tmp_file%

:: 方式2 直接命中
dir /b| findstr /c:%query_name_pattern% > %tmp_file%

type  %tmp_file%

echo ======================= start loop...
::
::文件名 不会出现逗号
for /f "delims=, tokens=1" %%a in (%tmp_file%) do (
    echo %%a
	set run_path=%current_path%\%%a
)
echo ======================= print run file path
echo "%run_path%"

echo ======================= start cmd file
start cmd /k "%run_path%"


:: 删除临时文件
echo ======================= del tmp file
del %tmp_file%

echo "end..."
echo .....................................................................
echo .....................................................................
echo .....................................................................

:: 等3秒
timeout /t 3

:: 退出cmd窗口
exit

假设有  xxx_script v1.cmd   xxx_script v2.cmd

会自动选择v2版本执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值