激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - bat - bat過濾任意字符

bat過濾任意字符

2021-12-26 15:03allyesno bat

早在寫 bat的一個小游戲猜數字的時候我就研究過這個問題 如何在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:\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 "\<\\\>"
登錄的時候 只需要寫一次\不需要雙寫

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

延伸 · 閱讀

精彩推薦
  • batWindows下用bat命令行方式更改IE代理服務器設置方法

    Windows下用bat命令行方式更改IE代理服務器設置方法

    批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進行批量的處理,批處理文件的擴展名為bat,下面通過本文給大家分享Windows下用bat命令...

    大蘿卜空心的6202021-10-06
  • batWindows批處理更改當前工作路徑的BAT

    Windows批處理更改當前工作路徑的BAT

    最近項目上需要獲取文件夾下所有文件信息,因為文件夾是在server上,所以想用批處理bat來獲取該路徑下所有文件信息,然后通過任務計劃管理去每天自動...

    腳本之家12122021-10-07
  • batbat過濾任意字符

    bat過濾任意字符

    早在寫 bat的一個小游戲猜數字的時候我就研究過這個問題 如何在bat里面實現 對輸入的任意字符進行過濾 當時使用的幾種方法如下 ...

    allyesno11802021-12-26
  • batbat實現一分鐘清除系統中所有垃圾文件

    bat實現一分鐘清除系統中所有垃圾文件

      在桌面上點鼠標右鍵,選擇新建一個“記事本”,把下面的字復制進去,點“另存為”,把文件名定為“清除系統垃圾.bat”就完成,記住后綴名一定要...

    批處理之家10592021-11-14
  • bat批處理重命名系列案例代碼

    批處理重命名系列案例代碼

    這篇文章主要介紹了批處理重命名系列案例代碼,需要的朋友可以參考下...

    張戈10372021-10-07
  • bat讓bat批處理以管理員權限運行的實現方法

    讓bat批處理以管理員權限運行的實現方法

    這篇文章主要介紹了讓bat批處理以管理員權限運行的實現方法,需要的朋友可以參考下...

    bat教程網6962021-10-08
  • bat變量延遲詳解 call setlocal

    變量延遲詳解 call setlocal

    變量延遲在for語句中起著至關重要的作用,不只是在for語句中,在其他的復合語句中,它也在幕后默默地工作著,為了突出它的重要性,本節內容在單獨的...

    腳本之家5742021-10-08
  • bat使用 windows bat 腳本命令一鍵啟動MySQL服務的方法

    使用 windows bat 腳本命令一鍵啟動MySQL服務的方法

    這篇文章主要介紹了使用 windows bat 腳本命令 一鍵啟動MySQL服務的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的...

    明金同學14752021-10-07
主站蜘蛛池模板: 亚洲欧美国产精品va在线观看 | 成人午夜视频在线观看免费 | 黄色片网站免费在线观看 | 黄视频在线网站 | 黄色免费高清网站 | 天天透天天狠天天爱综合97 | 国产精品jk白丝蜜臀av软件 | 日韩毛片在线看 | 在线91视频| 欧美性生交zzzzzxxxxx | 日本残忍极度灌浣肠视频 | 亚洲看片网| 欧美一级黄色免费 | 国产成人精品免费视频大全办公室 | 国产免费一区二区三区视频 | 国产孕妇孕交大片孕 | 欧美一级片在线 | 羞羞色院91精品网站 | 欧美精品a∨在线观看不卡 午夜精品影院 | 久久亚洲精品视频 | 亚洲情在线 | 国产一精品久久99无吗一高潮 | 国产精品三级a三级三级午夜 | 性少妇videosexfreexx | 成人国产精品一区 | 中国的免费的视频 | 久久久久久亚洲国产精品 | 牛牛热这里只有精品 | 得得啪在线视频 | 黄视频免费在线观看 | 久久99综合| 国产午夜电影 | 91精品国产91 | 日本中文视频 | 国产电影精品久久 | 日韩欧美精品电影 | 性片久久 | 日本不卡一区二区在线观看 | 亚洲最新无码中文字幕久久 | 亚洲成人精品久久久 | 久久亚洲美女视频 |