bat字符过滤器【 修正版 】(ALLyeSNO)

【Linux系统基础快速入门详解】Linux 常用文件过滤编辑命令原理详解和每个命令使用场景以及实例 rename命令适用于批量重命名文件,可以方便地将文件名中的某些部分替换为新的内容,或者将文件名中的某些字符进行删除或者添加。常用于批量处理大量的文件,例如,将文件名中的日期格式化为标准的格式,或者将多个文件名中的相同部分进行统一替换。其中,s表示替换操作,.txt$表示以.txt结尾的文件名,.md表示新的文件后缀名,*.txt表示要重命名的文件。其中,y表示字符替换操作,a-z表示要替换的字符集,A-Z表示替换后的字符集,*表示对所有文件进行替换。 阅读详情
FreeXploiT原创文章

@echo off
rem 谢谢zzzevazzz对代码的改进
rem 关于 set errorlevel=>nul set password=>nul 我还是选择了保留 这样避免其他程序
rem 如果调用这两个变量 会引起错误 ^password=ph4nt0m$的办法很好 我原来是想用sort
rem 进行顺序的调配 看来现在这个地方还是用zzzevazzz的方法比较好 sort 我就用在其他地方吧
rem the key.bat made by ALLyeSNO
cls
:allyesno
set errorlevel=>nul
echo 请输入登录口令
set password=allyesno is a pig>nul
set/p password=
set password|findstr "^password=ph4nt0m$"
if "%errorlevel%"=="0" echo 口令正确&goto end
echo 口令错误&goto allyesno
:end
set password=>nul
set errorlevel=>nul
echo 你成功登录系统


注:请将上面的脚本保存为key.bat执行


附原文(上面是最终确定的脚本):





早在写 bat的一个小游戏猜数字的时候我就研究过这个问题 如何在bat里面实现 对输入的任意字符进行过滤 当时使用的几种方法如下
Codz:

if "%1"=="要过滤的字符" echo 你输入的是非法字符
例
: if "%1"=="wrongpassword" echo 
错误口令

set errorlevel
=
0
echo 要过滤的字符|find 
"要过滤的字符"
if "%errorlevel%"=="0" echo 
你输入的是是非法字符
if "%errorlevel%"=="1" echo 
该字符串不在非法列表中


主要是使用这两种方法 这两种方法可以过滤数字 和 英文字母 但是 对 特殊字符 不起作用

当要过滤【~`!@#$%^&*()_+|-=/[]{};':,./<>? 】(包含空格和tab键值)的时候 我们要这样

Codz:

echo "anyword"|find "anywrod"
注意到有什么不同了吗 是的 我们加入了""来包含anyword 可是过滤到此并没完成 发现上面要过滤的字符 少了什么吗 是的 少了" 字符本身 遗憾的是 这种方法 无法完美的过滤"字符本身 当" 取值 为奇数 和 偶数的 时候 用find对她进行 过滤 随条件 不同可能会报错

这个问题 困扰了 我半年之久 曾在安焦上 问了一下 没人回答

事实上要过滤它 并不是那么的简单 我们先写几个验证密码的小程序 看看在不同情况下程序的反应

我们先写一个验证密码登录的小程序

注:当密码验证字符为ph4nt0m的时候 授权登录

Codz:

@echo off
cls
:
allyesno
set errorlevel
=>
nul
echo 
请输入登录口令
set
/p password
=
echo 
"%password%"|findstr 
"ph4nt0m"
if "%errorlevel%"=="0" echo 口令正确&
goto end
echo 口令错误&
goto allyesno
:
end
echo 
你成功登录系统


将bat保存为key.bat执行

执行结果

Codz:

C
:test>key
请输入登录口令
test
口令错误
请输入登录口令
ph4nt0m
"ph4nt0m"
口令正确
你成功登录系统


事实 上 上面的代码用来进行一般的口令验证已经足够了 但是 要达到我们的目的 任意字符过滤还不行
我们换个方式执行看看

执行结果
Codz:

C
:test>key
请输入登录口令
test
口令错误
请输入登录口令
"
"""
|findstr 
"ph4nt0m"
口令错误
请输入登录口令
ph4nt0m
"ph4nt0m"
口令正确
你成功登录系统


看见了吗 当我们输入" 字符的时候 程序报错了 并显示了密码 为什么会这样呢? 我们再看这个语句的语法结构 echo "%password%"|findstr "ph4nt0m" 当%password%="的时候 就是echo """|findstr "ph4nt0m"

之所以会如此 跟echo的特性有关 我们看下面几个语句

Codz:

I
:>echo "|cd
"
|
cd

I
:>echo ""|
cd
I
:

I:>echo 
"""|cd
"""
|
cd

I
:>echo """"|
cd
I
:


当"为奇数的时候 则打印整行 当"为偶数的时候则 执行 | 字符后面的命令 上面程序执行的命令是cd

这里我想了一个办法绕过echo的报错特性 我用set代替了echo 程序如下

Codz:

@echo off
cls
:
allyesno
set errorlevel
=>
nul
echo 
请输入登录口令
set
/p password
=
set |findstr 
"ph4nt0m"
if "%errorlevel%"=="0" echo 口令正确&
goto end
echo 口令错误&
goto allyesno
:
end
echo 
你成功登录系统


执行结果如下

Codz:

请输入登录口令
test
口令错误
请输入登录口令
"
口令错误
请输入登录口令
ph4nt0m
password=ph4nt0m
口令正确
你成功登录系统

C:
/t
est>


程序进一步的完美了

但是还是有问题D 我们再来看 换一种方式执行

Codz:

请输入登录口令
test
口令错误
请输入登录口令
ph4nt0mallyesno
password
=ph4nt0mallyesno
口令正确
你成功登录系统

C
:test
>


由于程序的验证方式是 set |findstr "ph4nt0m" 所以只要包含ph4nt0m字符的 密码 都被当成正确密码 所以密码ph4nt0mallyesno 也通过了

为了避免这个问题 我设置了 匹配参数/</> 对数据进行检验 修改后的程序 如下

Codz:

@echo off
cls
:
allyesno
set errorlevel
=>
nul
echo 
请输入登录口令
set
/p password
=
set |findstr 
"/<ph4nt0m/>"
if "%errorlevel%"=="0" echo 口令正确&
goto end
echo 口令错误&
goto allyesno
:
end
echo 
你成功登录系统


执行结果

Codz:

请输入登录口令
test
口令错误
请输入登录口令
ph4nt0mallyesno
口令错误
请输入登录口令
ph4nt0m
password
=ph4nt0m
口令正确
你成功登录系统

C
:test
>


最后再将程序 修整 如下

Codz:

@echo off
cls
:
allyesno
set errorlevel
=>
nul
echo 
请输入登录口令
set
/p password
=
rem 如果密码字符串包含此行任一字符~`!@#$%^&*()_+|-=[]{}
;':,./<>? 则必须使用匹配模式<>
rem 需要双写的字符
rem 不可以作为密码的字符 "
set password|findstr "/<ph4nt0m/>"
if "%errorlevel%"=="0" echo 口令正确&goto end
echo 口令错误&goto allyesno
:end
set password=>nul
echo 你成功登录系统


注:当密码字符串中有字符/的时候 需要将字符双写//
例 set password|findstr "/<///>"
登录的时候 只需要写一次/不需要双写

" 字符 不可以作为密码字符串 如果密码字符串包含此行任一字符~`!@#$%^&*()_+|-=[]{};':,./<>? 则必须使用匹配模式/</>
bat批处理命令手册 bat命令大全 cmd常用命令 包含命令上的常用和不太常用的命令,使用方便 立即下载

相关推荐

批处理实现过滤重复行

主要给大家汇总介绍了批处理实现过滤重复行的5种方法,小伙伴们可以自己测试下效率,有需要的小伙伴可以参考下。

批处理与管道-过滤器

三种典型的数据流风格 § Batch Sequential (批处理) § Pipe-and-Filter (管道-过滤器) § Process Control(过程控制,3.7) 批处理风格: 直观结构 批处理风格-基本定义 §每个处理步骤是一个独立的程序 §每一步必须在前一步结束后才能开始 §数据必须是完整的,以整体的方式传递 §典型应用: –传统的数据处理 –程序

嘿,牛慧升的博客 9826

思必驰离线语音芯片:智能家居控制的核心引擎

思必驰离线语音芯片TH1520通过本地化语音识别技术,为智能家居带来革命性体验。该芯片具备200-600毫秒的快速响应、75分贝抗噪能力和双核异构设计,显著提升设备交互效率。支持自定义指令和10种音色选择,开发周期缩短至3天,BOM成本降低30%,是智能家居控制的核心引擎。

redis7keeper的博客 985

windows bat批处理脚本 字符串截取、拼接、查找等使用说明

BAT批处理有着具有非常强大的字符串处理能力,其功能虽没有C、Python等高级编程语言丰富,但是常见的字符串截取、替换、连接、查找等功能也是应有尽有,本文逐一详细讲解。

chuangxin的专栏 5万+

我每天如何使用 ChatGPT

我偶尔会用这个功能作为开始。我本人非常喜欢阅读,让 ChatGPT 来概括所有文章,感觉就像身处于但丁描述的地狱的某个层次那样痛苦。然而,有时一些文章实在是太啰嗦、无聊,或者写得让人不愉快(比如一个无趣记者对一个让人讨厌的人进行的漫无焦点的采访)。我需要获取这些文章中的一些信息,以便保持信息的更新和了解。在晚期资本主义的广告经济下,很多文章只在一个段落里提供新信息,其余都是无聊的填充内容,只是为了展示糟糕的广告,这实在是对人们的时间和生命的一种浪费。我有几次利用 ChatGPT 来。

KevinDai007的博客 3783

告别Keil/IAR:在VSCode中用CMake+Clangd打造丝滑的STM32开发环境(附完整配置)

本文详细介绍了如何在VSCode中使用CMake和Clangd搭建高效的STM32开发环境,替代传统的Keil/IAR工具。通过完整的配置指南和快速开发技巧,帮助开发者实现轻量级、高度可定制的现代化开发流程,显著提升STM32项目的开发效率。

weixin_26843605的博客 164

常用批处理命令总结3之Find和FindStr

find 作用:从文件中收索字符串 格式:find 参数 "字符串" 路径\文件名 参数: /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N ...

weixin_33747129的博客 899

【Davinci开发】:CS接口创建及连接

AUTOSAR SWC之间添加CS-port :详细讲解step

2525

批处理检查变量是否存在特殊符号

@echo off&setlocal enabledelayedexpansion :开始 cls set 结果=没有出现符号 set /p 字符=??? set 字符长度=0 :检查字符长度 set 截取字符=!字符:~%字符长度%,1! if not “!截取字符!”"" (set /a 字符长度+=1 goto 检查字符长度 ) :检查符号 set /a 字符长度-=1 if "!字...

weixin_43704594的博客 557

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.**

过美好生活,做高效程序员 3129

OpenClaw实战三|电商自动化AI工具:自动上下架+智能客服+订单统计,小店运营效率直接翻3倍

对电商小团队、夫妻店、个人商家来说,最缺的不是流量,而是省时间的工具。OpenClaw这套电商自动化AI工具,不用懂代码、不用买昂贵的SaaS软件,一台服务器、简单配置,就能把最耗时间的工作全部交给AI。人只做最有价值的事:选品、拍图、搞流量、处理复杂售后,剩下的上下架、回复、统计,全都让AI帮你打工。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1458

Shell编程(四)文本过滤

文本过滤 简介:正则表达式、find介绍、grep介绍、awk介绍、sed介绍、合并与分割(sort、uniq、join、cut、paste、split)。 正则表达式 概念:一种用来描述文本模式的特殊语法 由普通字符(例如:字符a到z),以及特殊字符(元字符,如/ * ?等)组成匹配的字符串 文本过滤工具在某种模式之下,都支持正则表达式。 基本元字符集及其含义 练习 ...

coolwriter的博客 2947

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 192

grep或/与的多重过滤,包含ABC,但不含ABCD的字符&echo输出带颜色的字符

grep或/与的多重过滤,包含ABC,但不含ABCD的字符,附送一个echo输出带颜色的字符

ckckjsws的博客 1432

微信小程序爬虫终极指南:以电商小程序抓包与逆向分析为例(最新版)

在2026年的移动互联网生态中,微信小程序已经成为电商交易的核心载体之一。据统计,超过78%的头部电商平台都推出了微信小程序版本,其用户活跃度甚至超过原生App。对于数据从业者而言,小程序端往往藏着比Web端更丰富的接口数据——包括但不限于商品详情、价格波动、用户评价、库存变化、秒杀活动信息等。与传统的Web爬虫不同,微信小程序爬虫面临着三大核心挑战无URL地址栏:无法通过浏览器直接查看网络请求wx.request封装:所有请求均通过微信原生API发起,难以直接拦截然而,

2201_76125261的博客 536

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bat(批处理)处理特殊符号(感叹号,百分号)等

您找遍全网可能都找不到的解决方案 1 背景 最近迷恋上了bat脚本,以前没这么深入用,对它没啥感情。但是最近是近乎疯狂的迷上了它。 但是越是用的深入,越是发现各种稀奇古怪的事情: 就比如对特殊符号的处理,比如想要替换字符串里头的感叹号和百分号,死活就是成功不了。 而这类的功能换用javaScript/java/python都会非常简单。 没办法,总不能因为人家有弱点,我就弃用吧! 所以死磕开始... 2 问题描述 要替换的内容在txt文件里头(替换的字符串不包含特殊符号),然后逐行读取

wltsysterm的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

BAT批处理中的字符串处理详解(字符串截取)

其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;其中,变量aa在之前是不可以扩充的,通过call命令并将aa作为参数传递给子函数:deal,将aa变量转换成了变量%1,即符合%x格式,从而可以进行字符串扩充。截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。至于%x中x取a-z A-Z的形式,可以复习一下for语句,for语句里面的变量就是用%x来表示的,因而可以直接进行扩充。

HRD的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Bat脚本-在文件中查找多个字符串

概述 本文讲述的是对文本的内容进行检索,找到需要匹配的字符串并挑出对应字符串输出到新的文本中,实现文本内容过滤的效果。 背景 本人在开发的过程中,经常会打印一些 log 数据来监测系统是否运行正常,但是有时候 log 数据特别大,且有时候会有一些 log 和当前问题不相关,需要过滤掉,所以想写一个可以提取出我所需要信息的脚本来完成log 数据的提取。 需求 1、可以提取多个字符串内容; 2、可以输出到另外的文本中,不对原文件进行修改; 需求分析 根据这个需求,可以有多个方法实现,其实简单的就是对文本的内容进

qq_36836950的博客 5936

Windows机器bat脚本,用于过滤监控特定的端口号

Windows机器bat脚本,用于过滤监控特定的端口号 for /f “skip=4 tokens=2” %%i in (‘netstat -an -p tcp’) do if %%i==127.0.0.1:50011 echo %%i

weixin_43808555的博客 820

批处理文件遍历所有子目录批量移除文件名和目录名中特殊字符

首先非常感谢那些无私奉献学习资源的人。 本文件介绍利用批处理文件遍历所有子目录批量移除文件名中特殊字符的方法。 一个场景就是,从网上下载到的某些资源,文件名有一些特殊字符,如果你不想要这部分特殊字符,除了可以用工具批量移除之外,还可以用批处理文件来移除,方便快捷绿色省心~~ 完整版本,遍历所有子目录批量处理 @echo off setlocal enabledelayedexpansion chc...

Where there is a will there is a way 4497

在linux下用echo命令来清理日志,清理完毕之后不需要重启

echo "" > /usr/local/tomcat/tms2api.wuliusys.com/logs/catalina.out 这里是清理在linux下catalina.out tomcat的日志, 这里 就是用echo "" > 后面跟目标路径 将其赋值为空

mexican_jacky的专栏 2万+

在linux中echo用法,在Linux操作系统中Echo的用法是什?

1。echo显示字符串  普通字符串可以在echo后直接输入字符串,但这样当要输出某些字符如\时会有问题(这种写法的时候\是被当作继行符处理过滤掉的,要输出一个\必须打\\,跟c语言printf输出的要求相象),所以一般最好用′string′ 或"string"的格式,这样即使是\也可以输出,方便直观。#echo hello world  hello world  #echo hello\ wor...

weixin_35940949的博客 390

echo命令详解

linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 该命令的一般格式为: echo [ -n ] 字符串 其中选

复兴之路 7236

echo不简单-linux echo的八种实用用法

文章目录1 打印简单字符串2 打印特定变量3 打印转义字符串4 各种颜色打印输出5 打印其他命令行执行结果6 进制转换--其他进制转换为十进制7 10进制转16进制脚本8 16进制转10进制脚本 echo显示一行文字!但是你真以为只有显示一行文字那么简单吗?告诉你一些不为认知的更多echo用法,仅供参考! 1 打印简单字符串 user@user:~$ echo "hello world" he...

5468

linux下echo的用法,详细讲解:在Linux操作系统中Echo的用法

下面主要用例子说明用法(bash环境下测试)1.echo显示字符串普通字符串可以在echo后直接输入字符串,但这样当要输出某些字符如\时会有问题(这种写法的时候\是被当作继行符处理过滤掉的,要输出一个\必须打\\,跟c语言printf输出的要求相象),所以一般最好用´string´ 或"string"的格式,这样即使是\也可以输出,方便直观。#echo hello worldhello world...

weixin_34759094的博客 1万+
上一篇: bat-任意截断替换字符(转至沉睡不醒的blog;作者可以与我联系署名)
下一篇: --------溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值