【bat】判断字符串是否包含某字符串;bat字符串截取;vbs 如何加入参数;Windows如何后台运行bat文件(没有命令提示符框);.bat文件设置自动关机以及弹框确认

【bat】判断字符串是否包含某字符串:

@echo off
set a=55544333
set c=6666dfsfds
set b=44
echo %a%| findstr %b% >nul && (
    echo %a%包含%b%
) || (
    echo %a%不包含%b%
)
echo %c%| findstr %b% >nul && (
    echo %c%包含%b%
) || (
    echo %c%不包含%b%
)

pause

bat字符串截取:

1.变量的范围
数字计算[±21 4748 3647 整数],文本[8191个字节](set /p a=<文件 和 ^换行符 可突破该限制,暂不解释)
2.变量的命名
不允许使用纯数字
不建议使用单字母变量
命名不区分大小写
可以使用中文作为变量名
3.变量扩展-文本(以下示例均以变量%a%示范,实际变量名可以为任何值)
文本替换
%a:文本1=文本2% 文本1替换为文本2(文本2可留空,如%a:文本1=%)
文本替换支持通配符*?等
%a:*文本1=文本2% 开头到文本1第一次出现的地方替换为文本2(文本2可留空)
文本截取部分
%a:~10% 第10个字之后的内容
%a:~-10% 倒数第10个字之后的内容
%a:~,5% 开头5个字
%a:~,-5% 开头 - 倒数第5个字
%a:~10,5% 第10个字之后的5个字
%a:~10,-5% 第10个字 - 倒数第5个字
%a:~-10,5% 倒数第10个字之后的5个字
%a:~-10,-5% 倒数第10个字 - 倒数第5个字
注:文本扩展在for命令中可能不可用
示范:set a=%a:~-10,-5%
3.变量扩展-路径(以下示例均以变量%a示范)
(此时右边%可以省略, %~a 和 %~a% 是一样的)
%a 路径 "Temp\tmp 12345.txt"
%~a 删除引号 Temp\tmp 12345.txt
%~fa 完整路径 D:\AppData\Local\Temp\tmp 12345.txt
%~da 分区 D:
%~pa 路径 \AppData\Local\Temp\
%~na 文件名 tmp 12345
%~xa 扩展名 .txt
%~sa 短文件名 D:\AppData\Local\Temp\TM3A8C~1.TXT
%~aa 文件属性 --a--------
%~ta 修改日期 2016/06/02 16:26
%~za 文件大小(字节) 18
%~$b:a 在 目录b 搜索 文件a 找到的第一个文件。
如果变量b不存在,或者没有找到文件a,返回空字符串。
需事先给变量b赋值,多个路径可用分号分隔。命令示例
set b=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
可以组合使用来得到多重结果
%~dpa 分区和路径 D:\AppData\Local\Temp\
%~nxa 完整文件名 tmp 12345.txt
%~dp$b:a 在 目录b 搜索 文件a 输出 文件a 的 分区和路径
%~ftzaa 类似dir命令的输出(完整路径 日期 大小 属性)
--a-------- 2016/06/02 16:26 18 D:\AppData\Local\Temp\tmp 12345.txt
不组合拆分开也行,比如这样%~fa %~ta %~za %~aa
注意:路径扩展仅适用于%0 %1 …%9和for中的单字母变量%%i,若要支持其他变量,考虑使用call

vbs 如何加入参数:

加参数调用vbs脚本,在该脚本代码中使用 Wscript.Arguments(i) 取得参数,参数下标从0开始。使用 Wscript.Arguments.Count 获得参数个数。

以下例子枚举所有参数:
For Each arg In Wscript.Arguments
Wscript.echo arg
Next

Windows如何后台运行bat文件(没有命令提示符框):

怎么让bat文件在后台无声无息无影无形地运行呢?

用start/min命令去运行bat文件,电脑的任务栏下仍然会有相关的图标,以下的办法可以达到目的。

方法一:
  bat里有隐藏窗口的命令,很简单,只需要在代码头部加一段代码就可以了。 
  @echo off 
  if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
  :begin 
  ::下面是你自己的代码。


方法二:
  在你批处理的相同目录下新建.vbe,里面输入:
  DIM objShell set objShell=wscript.createObject("wscript.shell") 
  iReturn=objShell.Run("cmd.exe /C bat文件路径和名称", 0, TRUE)
  运行这个vbe文件就达到目的了!
  可以写的简单点: 
  Set ws = CreateObject("Wscript.Shell") 
  ws.run "cmd /c bat文件路径和名称",0 
  或者 
  CreateObject("WScript.Shell").Run "cmd /c bat文件路径和名称",0 
  (这种写法很多杀软报毒, 需要替换参数0) 
  最后那个0是指窗口参数,用法为:
  0 隐藏窗口并激活另一窗口。 
  1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。 
  2 激活窗口并以最小化显示该窗口。 
  3 激活窗口并以最大化显示该窗口。 
  4 按窗口最近的大小和位置显示。活动窗口保持活动。 
  5 以当前大小和位置激活并显示窗口。 
  6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。 
  7 最小化显示窗口。活动窗口保持活动。 
  8 以当前状态显示窗口。活动窗口保持活动。 
  9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志

.bat文件设置自动关机以及弹框确认:

@echo off
setlocal enabledelayedexpansion
 
set Vbscript=Msgbox("你的电脑将在五分钟后关机,是否继续?",1,"系统提醒")
for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a"
set ReturnValue1=同意关机
set ReturnValue2=取消操作
echo 你点击了!ReturnValue%MsHtaReturnValue%!
if %MsHtaReturnValue% == 1 (
    echo 关机啦!!!
    shutdown -s -t 300
) else (
    echo 取消成功!!!
)
 
pause

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值