亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

bat過濾任意字符

2020-07-26 20:39:10
字體:
來源:轉載
供稿:網友
文章作者:allyesno

早在寫 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:/test>



程序進一步的完美了

但是還是有問題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 "/<///>"
登錄的時候 只需要寫一次/不需要雙寫

" 字符 不可以作為密碼字符串 如果密碼字符串包含此行任一字符_+|-=[]{};':,./">~`!@#$%^&*()_+|-=[]{};':,./<>? 則必須使用匹配模式/</>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲在线| 久久久久久久久亚洲| 国产精品第1页| 国产日韩专区在线| 久久精品视频在线播放| 欧美俄罗斯性视频| 精品视频在线播放免| 懂色aⅴ精品一区二区三区蜜月| 欧美亚州一区二区三区| 亚洲一区二区三区毛片| 91沈先生作品| 亚洲精品视频免费在线观看| 国产中文字幕亚洲| 青草青草久热精品视频在线网站| 影音先锋日韩有码| 久久久精品久久久久| 成人看片人aa| 亚洲欧美日韩精品久久| 岛国精品视频在线播放| 中文字幕一精品亚洲无线一区| 日韩中文字幕在线播放| 狠狠色狠狠色综合日日五| 日韩精品999| 国产日韩av在线播放| 亚洲在线视频福利| 亚洲国产中文字幕在线观看| 欧美与黑人午夜性猛交久久久| 久久精品国产欧美激情| 国产日产久久高清欧美一区| 亚洲国产成人爱av在线播放| 成人在线免费观看视视频| 97婷婷大伊香蕉精品视频| 中文字幕在线观看日韩| 亚洲精品国产精品久久清纯直播| 欧美日韩中文在线观看| 成人免费在线视频网址| 91精品视频在线看| 国产精品自拍小视频| 国产精品久久久久久中文字| 精品国产鲁一鲁一区二区张丽| 在线播放日韩专区| 国产一区二区三区中文| 国产成人激情小视频| 91精品视频免费看| 日韩中文字幕网址| 国产精品久久久久久久av大片| 日韩成人中文字幕| 亚洲最大激情中文字幕| 国产精品国语对白| 欧美午夜丰满在线18影院| 日韩资源在线观看| 国产欧美婷婷中文| 国产精品久久久久999| 成人做爽爽免费视频| 91国语精品自产拍在线观看性色| 色噜噜国产精品视频一区二区| 91精品国产综合久久香蕉的用户体验| 精品久久久久久久久久久久| 国产精品成人一区二区三区吃奶| 综合激情国产一区| 亚洲成人激情在线| 亚洲美女久久久| 少妇久久久久久| 日韩欧美在线观看视频| 亚洲欧美国产制服动漫| 亚洲成人激情小说| www.欧美精品| 国产精品一区二区电影| 韩日精品中文字幕| 日韩一区二区三区在线播放| 精品福利樱桃av导航| 在线免费观看羞羞视频一区二区| 国产美女91呻吟求| 亚洲国产成人精品久久| 97精品视频在线播放| 欧美电影在线观看高清| 色综合亚洲精品激情狠狠| 日韩在线观看高清| 日本精品久久中文字幕佐佐木| 国产一区二区三区视频在线观看| 91国自产精品中文字幕亚洲| 国产成人精品免高潮在线观看| 亚洲最大成人网色| 91精品国产综合久久香蕉最新版| 久久手机免费视频| 中文字幕亚洲欧美一区二区三区| 亚洲高清久久久久久| 91精品在线影院| 欧美一级免费视频| 亚洲国产福利在线| 色噜噜国产精品视频一区二区| 国产在线观看精品一区二区三区| 精品丝袜一区二区三区| 国产日韩综合一区二区性色av| 欧美成人午夜剧场免费观看| 日韩亚洲精品电影| 国模叶桐国产精品一区| 日韩av日韩在线观看| 国产精品自产拍在线观看中文| 亚洲最大成人在线| 色综合久久中文字幕综合网小说| 亚洲精品国产品国语在线| 国产91精品高潮白浆喷水| 色多多国产成人永久免费网站| 亚洲片av在线| 成人激情视频小说免费下载| 亚洲福利精品在线| 久久综合五月天| 国产成人91久久精品| 亚洲欧美另类国产| 久久久91精品国产| 日韩有码在线电影| 国产小视频国产精品| 亚洲高清av在线| 久久91亚洲精品中文字幕| 久久久精品国产亚洲| 91精品国产777在线观看| 国产香蕉一区二区三区在线视频| 久久久久久亚洲精品中文字幕| 久久精品国产99国产精品澳门| 一区国产精品视频| 国产精品久久久久91| 亚洲男女自偷自拍图片另类| 亚洲第一免费播放区| 红桃av永久久久| 永久555www成人免费| 亚洲最大成人在线| 亚洲综合第一页| 久久伊人精品视频| 国产精品视频不卡| 亚洲欧美日韩中文在线制服| 国产成人在线一区| 亚洲男子天堂网| 91久久在线观看| 51精品国产黑色丝袜高跟鞋| 欧美黑人性视频| 国产精品极品美女在线观看免费| 91精品国产高清自在线看超| 日本午夜在线亚洲.国产| 最近中文字幕mv在线一区二区三区四区| 美女国内精品自产拍在线播放| 国产中文字幕日韩| 中文字幕免费精品一区高清| 成人性生交大片免费观看嘿嘿视频| 91视频免费在线| 欧美日韩午夜激情| 国自在线精品视频| 亚洲国内精品视频| 97视频在线看| 国产ts人妖一区二区三区| 国产精品久久在线观看| 日韩精品视频中文在线观看| 日韩综合视频在线观看| 日韩av电影院| 日韩欧美福利视频| 欧美午夜激情在线| 成人在线精品视频| 亚洲丝袜av一区| 日韩精品视频三区| 国产亚洲精品美女久久久| 欧美成人免费一级人片100| 91精品久久久久久久| 欧美插天视频在线播放| 亚洲国产一区二区三区四区|