变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置:首頁文章首頁 IT學院 IT技術

批處理(bat)學習的一些總結

作者:  來源:  發布時間:2012-1-11 14:01:50  點擊:
四、start、call、cmd 篇

之所以放在一起,是因為這三個命令的功能有所交集

1、start

@echo off

%1 cd.>tmp

set /p=%1

%1 start /b "" %0 :(五秒后退出) tm

if not "%1"=="" goto %1

set /p n=輸入任意字符

if defined n (

del tmp

echo 您輸入的是%n%,五秒后退出。

) else echo 輸入為空!五秒后退出。

:(五秒后退出)

ping /n 5 localhost>nul

if exist %2p exit

pause

::妙用start /b讓set /p實現choice的延時功能,不知道哪位前輩首創的,再次贊一個。此處%1、%2的技巧僅作點綴,我只是覺得這樣“搭積木”很好玩才強加上去的。

2、call

set a=b

set b=c

call echo %%%a%%%

::不使用變量延遲仍然可以借助call實現變量的延遲讀取與嵌套,但是效率上有缺陷

3、cmd

set a=b

set b=c

cmd /c echo %%%a%%%

::這證明call一個命令時的效果近似于cmd /c,二者的區別體現在"for"和"if"這兩個命令不能用call運行,因為for和if其實可能只是關鍵字,而非真實存在的命令

set a=b

set b=c

cmd /v:on /c echo !%a%!

::不需要setlocal,照樣可以使用變量延遲

%1 %0 :: echo;成功調用自身

%2

::個人很常用,這里用%1和%2的技巧為我所偏愛,那個::可以視情況換為rem。雖然此處并未出現cmd命令,但其實運行自身時執行的就是cmd /c %0。

@echo off

%1 cmd /v:on /c %0 ::

set n=123

echo !n!

pause

::綜合前兩個技巧實現不使用setlocal,開啟變量延遲

@echo off

set str=test測試1234

setlocal enabledelayedexpansion

for /f "delims=:; " %%a in ('((cmd /u /c echo !str!^)^&echo^;^;^)^|findstr /o ^;') do set /a n=%%a-5

for /f "delims=:" %%a in ('((echo !str!^)^&echo^;^;^)^|findstr /o ^;') do set /a d=n-%%a+3

set /a m=n/2,s=m-d

echo 共!m!個字符,!d!個單字節字符、!s!個雙字節字符

pause

::三步判斷單字符、雙字符個數的另類辦法。優勢在于支持對超長字符串進行計算(此時用常規算法步驟多且難通用),缺點在于效率低。

ren 1.exe 1.bat

echo 請雙擊1.bat

::為什么這樣也可以運行呢?因為exe的打開方式是"%1" %*,bat是cmd /c "%1" %*,所以把exe當做bat運行時,相當于cmd /c 1.exe...不過這只適合雙擊打開,在cmd內部調用此文件的時候是當成真正的bat運行的,所以會出錯。

五、其他命令 篇

1、xcopy比copy強大得多,最大的遺憾在于它是外部命令

xcopy /a 源文件夾 目標文件夾

::xcopy用在篩選上也很實用

xcopy /l /y /n %cd% ..

::巧取當前目錄下文件的短名,并不會真的復制

xcopy /d:1-31-2011 /l "%cd%" tmp\

::獲取修改日期在2011年1月31日以后的文件清單

xcopy /t *.txt C:\test\

::復制含有txt文件的目錄結構到C:\test

@echo 1.txt>list

xcopy /exclude:list ?.txt test\

::復制所有以單個字符為名的文件到test文件夾

xcopy /s *.txt ..\txt\

::復制所有以txt為名的子文件到上一級目錄中的txt文件夾

for /f "delims=" %%a in ('dir /s /b /ad^|sort -r') do rd "%%a" 2>nul

::刪除空文件夾的經典思路,利用rd默認不刪除非空文件夾的特性進序刪除空文件夾

for /d %%a in (*) do (

xcopy /q /h /r /s /k "%%a" "tmp\"

rd /s /q "%%a"

ren "tmp" "%%a"

)

::刪除空文件夾的另類方案

2、相比于前面幾個大佬級的命令,這些命令算是比較不起眼的了,所以歸在一類

copy nul+Unicode.bat 解密.bat

::用Unicode文件頭來進行編碼混淆加密的bat,可以用這條命令解密

echo>tmp 12323412 2323242134122434 345

more /t20 tmp>對齊.txt

type 對齊.txt

pause

::more命令的t開關也有大用途,潛規則不解釋。

cmd /u /c echo 0123456789|more

::more命令會將cmd /u輸出的nul字符轉換為空格,從而實現逐字打印一行單字節字符。

@echo off&setlocal enabledelayedexpansion

set n=32768

(for %%a in (16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do sort /rec !n! %0&&set /a n-=%%a||set /a n+=%%a)>nul 2>nul

echo 最長行有%n%個字符

pause

::當最長的行字符數大于128時可能可以用這個來判斷最長行的字符數(短于128時rec開關會失效,代碼中那一大堆2的N次方就是湊字數的,實戰中可以省掉一些),支持超長字符串,計算大文件時效率明顯優于傳統算法,新折半法來自plp626的轉帖,sort的/rec開關比較雞肋,想來想去也只想到這個用途,未見先例

ren 1.exe 1.bat

echo 請雙擊1.bat

::為什么可以把exe改為bat后綴名運行呢?因為exe的打開方式是"%1" %*,bat是cmd /c "%1" %*,所以把exe當做bat運行時,相當于cmd /c 1.exe...不過這只適合雙擊打開,在cmd內部調用此文件的時候是當成真正的bat運行的,所以會出錯。而且基于同樣的原因,它還可以改成com或者cmd后綴名來執行。

3、再介紹一些在cmd窗口中的技巧,當然它們僅僅是“欺騙”cmd窗口,一旦輸出到文件就原形畢露:

@echo off

echo 1

echo 2

echo 3

echo 退行了

pause>nul

::這個太牛了,不知道哪位發現的

set "dq= "

(echo 2、計劃生育的重要性%dq%啊

echo 1、貫徹落實科學發展觀%dq%哇)|sort

::借助tab鍵與退格符實現多行捆綁排序并錯行顯示,tab與退格之間的那個空格是關鍵,否則變為退行

set /p=同一行顯示不同顏色:

set /p=紅底藍字

echo  黃底綠字

findstr /a:41 .* 紅底藍字?

findstr /a:62 .* 黃底綠字?

del>nul 紅底藍字 黃底綠字

pause

::經常見到的在同一行顯示不同顏色的辦法,不過很多人總是用    (四個退格四個空格),說明沒理解退格鍵的意義

@prompt $_

dir fuck.tmp

pause

::利用這個prompt,打開回顯后可以同時輸出命令與命令結果,而不會有多余內容,適合制作bat運行日志

echo 

::這個黑色的圓點在前面的介紹中作為配角出現過,是ansi碼中的0x07,也等同于在cmd中輸入的ctrl+G,它每次被顯示在屏幕上時都會發出“滴”的一聲,所以以后findstr *.*時一定要留神了(除非不得已,否則需要把結果顯示到窗口時建議加上/p開關),萬一不小心打印出幾萬個,你的電腦會像發電報一樣響個不停,我中招N次了...

六、cmd運行機制 篇

1、預處理機制:特殊字符優先級、語句和語塊的劃分

setlocal enabledelayedexpansion

(set n=3

set /a n=2,n=%n%+!n!+n)

::利用預處理機制,將一個變量解釋為多個值

setlocal enabledelayedexpansion

echo ^^!

::當語句中存在變量延遲符號時,將被預處理兩次,這是一定要注意的

set str=.

set "str name=str"

for %%a in (%tmp%) do if defined %%a echo %%a 存在變量str

::利用for的參數變量在if參數劃分之后才被解釋的特點,彌補if defined對于空格變量名的兼容性缺陷,本質原因是for和if都是特殊的函數,他們的參數設置在語塊的預處理中就已經被cmd“記住”了,之后無法對其進行改變。

首頁 上一頁 [1] [2] [3]  下一頁 尾頁

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: 看全色黄大色大片免费久久怂 | 最近韩国日本免费免费版 | 一区二区三区精品国产欧美 | 人人爽天天碰天天躁夜夜躁 | 日韩一区二区三区在线播放 | 毛片免费网址 | 国产一区二区精品在线观看 | 在线综合+亚洲+欧美中文字幕 | 日本一区二区在线视频 | 国产成人永久免费视频 | 国产中文视频 | 日本大臿亚洲香蕉大片 | 亚洲免费一区 | 操美女影院 | 欧美人成网站在线看 | 色成人综合网 | 天天天天天天操 | 免费一级黄色录像 | 成人小视频在线免费观看 | 天天干狠狠操 | 欧美激情二区 | 九九九九九九精品免费 | 婷婷在线五月 | 理论片亚洲 | 亚洲色啦啦狠狠网站 | 一级黄色录像免费观看 | 欧美精品一区二区三区在线播放 | 欧美日本视频一区 | 99爱精品视频 | 日韩一区二区三区精品 | 欧美高清在线精品一区 | 天天操天天射天天色 | 国产裸舞在线一区二区 | 五月天婷婷在线视频 | 日本免费久久 | 手机国产精品一区二区 | 久草视频在线资源站 | 亚洲国产精品乱码一区二区三区 | 国产在线欧美日韩一区二区 | 色yeye成人免费视频 | 一级黄色片毛片 |