湖北省稅務(wù)局網(wǎng)站建設(shè)方sem和seo哪個工作好
一、連接符
1、雙引號
不要求雙引號閉合
舉例:"who"a"mi" //閉合的 "who"a"mi //不閉合的


2、圓括號
必須在兩邊,不能包括中間的字符。
舉例:((whoami))

3、^符號(轉(zhuǎn)譯符號)
不可以在結(jié)尾,同樣不要求閉合
不能同時連續(xù)加2個^符號,因?yàn)閊號是cmd中的轉(zhuǎn)義符,跟在他后面的符號會被轉(zhuǎn)義
舉例:wh^o^a^mi

4、常規(guī)替換
%變量名:需要替換的內(nèi)容=值%
如下舉個例子:@符號能夠?qū)⒅祩鬟f到前面的環(huán)境變量中,如下就是將test傳到c@alc的@位置,輸出將是ctestalc。
cmd /c "set x=c@alc & echo %x:@=test% | cmd"

二、set命令和Windows變量
%任意字符%默認(rèn)為空值。
set用來設(shè)置一個變量,%%括起來的用來引用變量,舉例如下:
set a=whoami //設(shè)置變量a=1
echo a //輸出一個a字符
echo %a% //輸出變量a的值
%a% //直接引用a變量內(nèi)的值進(jìn)行執(zhí)行

多環(huán)境變量合并拼接利用
cmd /c"set a=ser&& set b=ne&& set c=t u&&call %b%%c%%a%"
cmd /c "string":表示:執(zhí)行字符串string指定的命令,然后終止。
cmd /V:ON /C "set a=ser&& set b=ne&& set c=t u&& !b!!c!!a!"
/v:on : 啟用延遲的環(huán)境變量擴(kuò)展,啟用的話,可以不使用call命令來擴(kuò)展變量,使用%var%或!var!來擴(kuò)展變量,也就是可以使用感嘆號字符來替代運(yùn)行時的環(huán)境變量值。


三、切割字符串
命令行中存在類似php和python之類的語言中截取字符串的用法。
截取字符串的語法:%變量名:~x,y%
即對變量從第x個元素開始提取,總共取y個字符。
當(dāng)然也可以寫-x,-y,從后往前取
寫作-x,可取從后往前數(shù)第x位的字符開始,一直到字符的末尾
-y來決定少取幾個字符
舉例如下:
set a=whoami
echo %a%
%a:~0% //取出a的值中的所有字符 //此時正常執(zhí)行whoami
%a:~0,6% //取出a的值,從第0個位置開始,取6個值 //此時因?yàn)閣hoami總共就6個字符,所以取出后正常執(zhí)行whoami
%a:~0,5% //取5個值,whoam無此命令
%a:~0,4% //取4個值,whoa無此命令

echo %a%
echo %a:~-5% //從后往前5個字符
echo %a:~-5,-1% //從后往前5個字符并且去掉最后一個
echo %a:~-5,1% //從后往前5個詞組并且值展示第一個字符

綜合利用:先用set命令查看所有的環(huán)境變量及值,然后根據(jù)自己想要的命令進(jìn)行截取拼接。
空格被過濾的情況下也可以根據(jù)set變量的值中有空格的值進(jìn)行提取。

四、for循環(huán)拼接命令
For循環(huán)經(jīng)常被用來混淆處理cmd命令,使得cmd命令看起來復(fù)雜且難以檢測。最常用的For循環(huán)參數(shù)有 /L,/F參數(shù)。
格式為:
for 參數(shù) %變量名 in (相關(guān)文件或命令) do 執(zhí)行的命令
具體利用:
for /L %variable in (start,step,end) do command [command-parameters]
該命令表示以增量形式從開始到結(jié)束的一個數(shù)字序列。使用迭代變量設(shè)置起始值(start).然后逐步執(zhí)行一組范圍的值,直到該值超過所設(shè)置的終止值 (end)。
/L 將通過對start與end進(jìn)行比較來執(zhí)行迭代變量。
如果start小于end,就會執(zhí)行該命令,否則命令解釋程序退出此循環(huán)。
還可以使用負(fù)的 step以遞減數(shù)值的方式逐步執(zhí)行此范圍內(nèi)的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 則生成序列 (5 4 3 2 1)。
舉例利用:
cmd /C "for /L %i in (1,1,5) do start cmd" //會執(zhí)行打開5個cmd窗口

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
(file-set) 為文件名,for會依次將file-set中的文件打開,并且在進(jìn)行到下一個文件之前將每個文件讀取到內(nèi)存,按照每一行分成一個一個的元素,忽略空白行。
("string")代表字符串
('command')代表命令。
舉例利用:
假如文件aa.txt中如下內(nèi)容:
第1行第1列 第1行第2列;第1行第3列;第1行第4列
第2行第1列 第2行第2列;第2行第3列;第2行第4列
參數(shù)一:for /F %i in (aa.txt) do echo %i //默認(rèn)以空格或者Tab鍵作為分隔符

參數(shù)二:for /F "delims=;" %i in (aa.txt) do echo %i //將;作為分隔符進(jìn)行分割

參數(shù)三:for /F "tokens=2 delims=;" %i in (aa.txt) do echo %i //指定用; 作為分隔符并且提取第2列數(shù)據(jù)

在實(shí)戰(zhàn)中利用:
文件aa.txt中內(nèi)容為自己的命令
whoami systeminfo
ipconfig dir
參數(shù)一:for /F %i in (aa.txt) do %i //直接執(zhí)行第一行第一個和第二行第一個參數(shù)的命令

參數(shù)二:for /F "tokens=2 delims= " %i in (aa.txt) do %i //指定用 空格 作為分隔符并且執(zhí)行第二列參數(shù)命令


五、繞過空格過濾
(1) 常規(guī)執(zhí)行方式
直接用%26替換空格
(2) echo輸出(繞過空格)
通過=繞過echo test123中的空格
舉例:http://xxxx.com/test.php?addr=baidu.com%26echo=test123
(3)逗號和分號
逗號與分號某些情況可以當(dāng)作一個終止符號或者代替空格。
