一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - bat - bat過濾任意字符

bat過濾任意字符

2021-12-26 15:03allyesno bat

早在寫 bat的一個(gè)小游戲猜數(shù)字的時(shí)候我就研究過這個(gè)問題 如何在bat里面實(shí)現(xiàn) 對(duì)輸入的任意字符進(jìn)行過濾 當(dāng)時(shí)使用的幾種方法如下

早在寫 bat的一個(gè)小游戲猜數(shù)字的時(shí)候我就研究過這個(gè)問題 如何在bat里面實(shí)現(xiàn) 對(duì)輸入的任意字符進(jìn)行過濾 當(dāng)時(shí)使用的幾種方法如下
Codz: 
if "%1"=="要過濾的字符" echo 你輸入的是非法字符 
例: if "%1"=="wrongpassword" echo 錯(cuò)誤口令 

set errorlevel=0 
echo 要過濾的字符|find "要過濾的字符" 
if "%errorlevel%"=="0" echo 你輸入的是是非法字符 
if "%errorlevel%"=="1" echo 該字符串不在非法列表中



主要是使用這兩種方法 這兩種方法可以過濾數(shù)字 和 英文字母 但是 對(duì) 特殊字符 不起作用

當(dāng)要過濾【_+|-=\[]{};':,./">~`!@#$%^&*()_+|-=\[]{};':,./<>? 】(包含空格和tab鍵值)的時(shí)候 我們要這樣

Codz: 
echo "anyword"|find "anywrod"

注意到有什么不同了嗎 是的 我們加入了""來(lái)包含anyword 可是過濾到此并沒完成 發(fā)現(xiàn)上面要過濾的字符 少了什么嗎 是的 少了" 字符本身 遺憾的是 這種方法 無(wú)法完美的過濾"字符本身 當(dāng)" 取值 為奇數(shù) 和 偶數(shù)的 時(shí)候 用find對(duì)她進(jìn)行 過濾 隨條件 不同可能會(huì)報(bào)錯(cuò)

這個(gè)問題 困擾了 我半年之久 曾在安焦上 問了一下 沒人回答 

事實(shí)上要過濾它 并不是那么的簡(jiǎn)單 我們先寫幾個(gè)驗(yàn)證密碼的小程序 看看在不同情況下程序的反應(yīng)

我們先寫一個(gè)驗(yàn)證密碼登錄的小程序

注:當(dāng)密碼驗(yàn)證字符為ph4nt0m的時(shí)候 授權(quán)登錄

Codz: 
@echo off 
cls 
:allyesno 
set errorlevel=>nul 
echo 請(qǐng)輸入登錄口令 
set/p password= 
echo "%password%"|findstr "ph4nt0m" 
if "%errorlevel%"=="0" echo 口令正確&goto end 
echo 口令錯(cuò)誤&goto allyesno 
:end 
echo 你成功登錄系統(tǒng)



將bat保存為key.bat執(zhí)行

執(zhí)行結(jié)果

Codz: 
C:test>key 
請(qǐng)輸入登錄口令 
test 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0m 
"ph4nt0m" 
口令正確 
你成功登錄系統(tǒng)



事實(shí) 上 上面的代碼用來(lái)進(jìn)行一般的口令驗(yàn)證已經(jīng)足夠了 但是 要達(dá)到我們的目的 任意字符過濾還不行
我們換個(gè)方式執(zhí)行看看

執(zhí)行結(jié)果
Codz: 
C:test>key 
請(qǐng)輸入登錄口令 
test 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 

"""|findstr "ph4nt0m" 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0m 
"ph4nt0m" 
口令正確 
你成功登錄系統(tǒng)



看見了嗎 當(dāng)我們輸入" 字符的時(shí)候 程序報(bào)錯(cuò)了 并顯示了密碼 為什么會(huì)這樣呢? 我們?cè)倏催@個(gè)語(yǔ)句的語(yǔ)法結(jié)構(gòu) echo "%password%"|findstr "ph4nt0m" 當(dāng)%password%="的時(shí)候 就是echo """|findstr "ph4nt0m"

之所以會(huì)如此 跟echo的特性有關(guān) 我們看下面幾個(gè)語(yǔ)句

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

I:>echo ""|cd 
I: 

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

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



當(dāng)"為奇數(shù)的時(shí)候 則打印整行 當(dāng)"為偶數(shù)的時(shí)候則 執(zhí)行 | 字符后面的命令 上面程序執(zhí)行的命令是cd

這里我想了一個(gè)辦法繞過echo的報(bào)錯(cuò)特性 我用set代替了echo 程序如下

Codz: 
@echo off 
cls 
:allyesno 
set errorlevel=>nul 
echo 請(qǐng)輸入登錄口令 
set/p password= 
set |findstr "ph4nt0m" 
if "%errorlevel%"=="0" echo 口令正確&goto end 
echo 口令錯(cuò)誤&goto allyesno 
:end 
echo 你成功登錄系統(tǒng)



執(zhí)行結(jié)果如下

Codz: 
請(qǐng)輸入登錄口令 
test 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 

口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0m 
password=ph4nt0m 
口令正確 
你成功登錄系統(tǒng) 

C:\test>



程序進(jìn)一步的完美了

但是還是有問題D 我們?cè)賮?lái)看 換一種方式執(zhí)行

Codz: 
請(qǐng)輸入登錄口令 
test 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0mallyesno 
password=ph4nt0mallyesno 
口令正確 
你成功登錄系統(tǒng) 

C:test>



由于程序的驗(yàn)證方式是 set |findstr "ph4nt0m" 所以只要包含ph4nt0m字符的 密碼 都被當(dāng)成正確密碼 所以密碼ph4nt0mallyesno 也通過了

為了避免這個(gè)問題 我設(shè)置了 匹配參數(shù)\<\> 對(duì)數(shù)據(jù)進(jìn)行檢驗(yàn) 修改后的程序 如下

Codz: 
@echo off 
cls 
:allyesno 
set errorlevel=>nul 
echo 請(qǐng)輸入登錄口令 
set/p password= 
set |findstr "\<ph4nt0m\>" 
if "%errorlevel%"=="0" echo 口令正確&goto end 
echo 口令錯(cuò)誤&goto allyesno 
:end 
echo 你成功登錄系統(tǒng)



執(zhí)行結(jié)果

Codz: 
請(qǐng)輸入登錄口令 
test 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0mallyesno 
口令錯(cuò)誤 
請(qǐng)輸入登錄口令 
ph4nt0m 
password=ph4nt0m 
口令正確 
你成功登錄系統(tǒng) 

C:test>



最后再將程序 修整 如下 

Codz: 
@echo off 
cls 
:allyesno 
set errorlevel=>nul 
echo 請(qǐng)輸入登錄口令 
set/p password= 
rem 如果密碼字符串包含此行任一字符_+|-=[]{};':,./">~`!@#$%^&*()_+|-=[]{};':,./<>? 則必須使用匹配模式<> 
rem 需要雙寫的字符 
rem 不可以作為密碼的字符 " 
set password|findstr "\<ph4nt0m\>" 
if "%errorlevel%"=="0" echo 口令正確&goto end 
echo 口令錯(cuò)誤&goto allyesno 
:end 
set password=>nul 
echo 你成功登錄系統(tǒng)



注:當(dāng)密碼字符串中有字符\的時(shí)候 需要將字符雙寫\\ 
例 set password|findstr "\<\\\>"
登錄的時(shí)候 只需要寫一次\不需要雙寫

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

延伸 · 閱讀

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

    Windows下用bat命令行方式更改IE代理服務(wù)器設(shè)置方法

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

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

    Windows批處理更改當(dāng)前工作路徑的BAT

    最近項(xiàng)目上需要獲取文件夾下所有文件信息,因?yàn)槲募A是在server上,所以想用批處理bat來(lái)獲取該路徑下所有文件信息,然后通過任務(wù)計(jì)劃管理去每天自動(dòng)...

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

    bat過濾任意字符

    早在寫 bat的一個(gè)小游戲猜數(shù)字的時(shí)候我就研究過這個(gè)問題 如何在bat里面實(shí)現(xiàn) 對(duì)輸入的任意字符進(jìn)行過濾 當(dāng)時(shí)使用的幾種方法如下 ...

    allyesno11802021-12-26
  • batbat實(shí)現(xiàn)一分鐘清除系統(tǒng)中所有垃圾文件

    bat實(shí)現(xiàn)一分鐘清除系統(tǒng)中所有垃圾文件

      在桌面上點(diǎn)鼠標(biāo)右鍵,選擇新建一個(gè)“記事本”,把下面的字復(fù)制進(jìn)去,點(diǎn)“另存為”,把文件名定為“清除系統(tǒng)垃圾.bat”就完成,記住后綴名一定要...

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

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

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

    張戈10372021-10-07
  • bat讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法

    讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法

    這篇文章主要介紹了讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法,需要的朋友可以參考下...

    bat教程網(wǎng)6962021-10-08
  • bat變量延遲詳解 call setlocal

    變量延遲詳解 call setlocal

    變量延遲在for語(yǔ)句中起著至關(guān)重要的作用,不只是在for語(yǔ)句中,在其他的復(fù)合語(yǔ)句中,它也在幕后默默地工作著,為了突出它的重要性,本節(jié)內(nèi)容在單獨(dú)的...

    腳本之家5742021-10-08
  • bat使用 windows bat 腳本命令一鍵啟動(dòng)MySQL服務(wù)的方法

    使用 windows bat 腳本命令一鍵啟動(dòng)MySQL服務(wù)的方法

    這篇文章主要介紹了使用 windows bat 腳本命令 一鍵啟動(dòng)MySQL服務(wù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的...

    明金同學(xué)14752021-10-07
主站蜘蛛池模板: 欧洲美女啪啪 | 日本韩国推理片免费观看网站 | 亚洲国产精品久久丫 | 国产99在线a视频 | 国产清纯白嫩大学生正在播放 | 亚洲黄色图 | 亚洲美女人黄网成人女 | 亚洲国产精品第一区二区三区 | 日本精品久久久久久久久免费 | 人成午夜免费大片在线观看 | 亚洲 欧美 国产 在线 日韩 | 99热国产在线 | 欧美成人免费tv在线播放 | 欧美日韩中文国产一区二区三区 | 欧美粗黑巨大gay | 韩国三级大全 | 亚洲AV永久无码精品老司机蜜桃 | 国产综合视频 | 911精品国产亚洲日本美国韩国 | 欧美军人男同69gay | 欧美成人第一页 | japanese在线看| 国产巨大bbbb俄罗斯 | 日本视频在线观看 | 日韩丝袜在线观看 | 古装一级无遮挡毛片免费观看 | 色在线看| 亚洲欧美日韩另类在线 | 成人免费高清视频 | 国产一级毛片国语版 | 男女做污事 | 精品久久久久亚洲 | α级毛片| 美女大鸡鸡 | 免费在线公开视频 | 男人天堂视频网 | 国产色综合久久五月色婷婷中文 | 国产成人精品视频频 | 毛片免费观看的视频 | 成人性生交大片免费看软件 | 母爱成瘾在线观看 |