好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > bat過濾任意字符

bat過濾任意字符

熱門標簽:聯通400電話去哪里申請啊 軟通動力地圖標注專員 湖州手機外呼系統 百度地圖標注地址有什么影響 徐州客服外呼系統排名 五華銷售外呼管理系統電話 汕頭外呼crm系統 綿陽外呼線路 DOTA地圖標注app
文章作者: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 "\\\\>"
登錄的時候 只需要寫一次\不需要雙寫

" 字符 不可以作為密碼字符串 如果密碼字符串包含此行任一字符_+|-=[]{};':,./">~`!@#$%^*()_+|-=[]{};':,./>? 則必須使用匹配模式\\>

標簽:內江 新余 廣東 棗莊 邯鄲 濟南 克拉瑪依 清遠

巨人網絡通訊聲明:本文標題《bat過濾任意字符》,本文關鍵詞  bat,過濾,任意,字符,bat,過濾,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《bat過濾任意字符》相關的同類信息!
  • 本頁收集關于bat過濾任意字符的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 援助配对全集在线观看| 日本wwwhdsex69| 非洲一区二区三区不卡| 3344永久在线观看视频免费| 午夜三级福利| 映画ady@ady9.net| 国产免费大片视频| 丈夫情人| 小sao货真紧水真多| 巨胸爆乳???动漫| 公交车上3p嗯啊呻吟18p| 日韩伦乱| 免费?无码?国产在线百花| 亚洲色综合777777| 草草影院私人免费入口| 小黄文在线观看| 揉我奶头?啊?cao我视频| 美女视频在线观看免费高清完整版 | 欧美三级视频在线观看| 雯雯的肉奴生活1—48| 西班牙一级毛片免费看| 亚洲爱爱天堂| 欧美AV无码一区二区70老年人| 高H亲子乱H| 美女被艹视频软件| 国产精品视频网站你懂得| 偷窥 国产在线视频| 免费黄色网站视频| 轻点灬大JI巴太粗太长了日本| 欧美韩日国产| 女同??被??出水玩具动漫| 91蝌蚪91????蜜月| 宝贝c我想摸你奶让我揉揉视频| 少妇被??到高潮出水| 免费看成人生活片的软件| 女全身裸无遮挡免费毛片| 年轻的岳母2| 三级做爰全部视频| 国产福利网站| 在线a亚洲老鸭窝天堂| 一女二男3p波多野结衣|