日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批处理的一些小技巧

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批处理的一些小技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

批處理各符號的功能:
1.
echo
有兩個狀態一個是on 一個是off默認的是on 它的功能是顯示當前文件的路徑,如果不寫on 或者是off的時候,默認情況下

是打開的即顯當前文件的路徑,加上off后,所有路徑都不顯示,但是echo off這行還能顯出來,要讓這行也消失的話就在它們前面

加一個@@echo off,另外echo命令的另一種用法,可以直接編輯文本文件,例如:
echo netstat -an >a.bat
結晶果是在當前目錄下生成一個a.bat的文件,雙擊直接執行這個文件時,就會執行netstat -an這個命令

。

2.
>
這個字符的意思是將">"前面的內容傳遞并且覆蓋">"后面的內容,它所起的作用是將運行的回顯結果傳遞到后面的范圍
.
例如:ipconfig.txt中的內容是1113333,執行ipconfig /all >ipconfig.txt即將ipconfig /all的內容覆蓋原有的1113333。與這個

符號相似的還有>>它的功能不是覆蓋而追加,即將運行后的內容加到原來的1113333后。

3.
|
這是一個管道傳輸命令,意思是將上一命令執行的結果傳到下一個命令去處理

例如:
dir c:/|find "txt"
以上命令是:查找C/所有,并發現TXT字符串。

||

Usage:第一條命令 || 第二條命令 [|| 第三條命令...]

用這種方法可以同時執行多條命令,當碰到執行正確的命令后將不執行后面的命令,如果沒有出現正確的命令則一直執行完所有命令

(只要正確后面的就不執行)

4.
^
是對特殊符號"<",">","&"的前導字符,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他們當成符號而不使用他們的特殊

意義。
例如:
C:/>echo ipconfig.txt ^>ipconfig

結果為:ipconfig.txt >ipconfig沒有追加只是顯示出來而已

5.
&
這個符號允許在一行中使用2個以上不同的命令,當第一個命令執行失敗了,也不影響后邊的命令執行。

例如:C:/>dir d:/p & dir e: /p & dir c: /p
結果是先后執行

6.
&&
這個命令和上邊的類似,但區別是,第一個命令失敗時,后邊的命令也不會執行

例如:C:/>dir w:/p && dir e: /p && dir c: /p 由于電腦上沒有w盤所以顯示結果為:系統找不到指定的路徑。這樣以來,后面的

兩個盤就不執行啦。(當第n個命令失敗時此命令后面的命令將不再執行,也就是說一直執行到失敗為止)
7.
""
雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法

cd "program files"
cd progra~1
cd pro*

以上三種方法都可以進入program files這個目錄

8.
,
逗號相當于空格,在某些情況下“,”可以用來當做空格使

比如

dir,c:/

9.
;
分號,當命令相同時,可以將不同目標用;來隔離,但執行效果不變,如執行過程中發生錯誤,則只返回錯誤報告,但程序還是

會執行。

比如:

dir c:/;d:/e:/;f:/

以上命令相當于

dir c:/
dir d:/
dir e:/
dir f:/
但是前面執行的盤不存在的話,后面的命令將不會執行。

例如:C:/>dir w:;d: /p;e: /p
結果為:系統找不到指定的路徑。

10.echo的后面加一個點,所起到的作用是顯示一空行。

以下范例顯示的批處理程序包含前后各有一個空行的三行消息:

@echo off
echo.
echo This batch program
echo formats and checks
echo new disks
echo.

如果想讓打開的批處理命令的標題欄有名字的話可以用到title這個參數

title filename


">nul 2>nul"
可以屏蔽一切屏幕的輸出,例如:dir >nul 2>nul這樣屏幕上什么都不會輸出,也就是沒有結果。

1>nul 表示將正確執行目錄樹的信息禁止輸出,2>nul 表示將執行過程中的錯誤信息禁止輸出。


斷開網絡連接方法有兩種:一種是rasphone /h adsl,另一種是rasdial adsl /d
11.goto
一般和:是聯用的goto跳轉的地方入口就是":"。goto命令的另一種用法一:提前結束程序。在程序中間使用goto命令跳轉到

某一標簽,而這一標簽的內容卻定義為退出。如:
……
goto end
……
:end


dir
中有些命令是要牢記的
dir d: /s /p /b (/a
這后面還有一些參數像h,r,d,s/d)具體的可以看幫助


%userprofile%
在寫批處理時這個相當于C:/Documents and Settings/Administrator

在結束關鍵進程的時候,要先結束explorer.exe這個進程,最好用系統自帶的工具taskkill這個關explorer.exe的時候任何殺毒軟件

都沒有提示,但是如果換成了用ntsd關的話,卡巴斯基會報毒,而且這時的explorer會在關閉的一下后馬上自啟動,而taskkill就會

一直關著直到等你開啟為止。

在使用for 的時候當用到 /d時,那是因為set中有* ?這兩個通配符


shift

1.可替代參數的編號是%o-9,如果要在一個命令行上使用超過10個可以被代換的參數,則可使用SHIFT命令來突破此限制。
2.
每當執行sHIFT一次,命令行上的所有參數將向左移動一位。%1的內容將為%2的內容所取代,%9內容則由新的參數取代。
3.
o表示批處理文件本身的名稱,永遠不變,所以每次執行時可以在批處理文件使用一次shift就向右移動一位,例如:

a.bat的內容:

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
pause

運行
c:/>a 1 2 3 4 5 6 7 8 9 10 11(
其后有11個參數)
1 2 3 4 5 6 7 8 9 (
取到最前面9個參數
)
c:/>shift (
移位
)
2 3 4 5 6 7 8 9 10 11(
取到另外9個參數
)
c:/>shift (
移位
)
3 4 5 6 7 8 9 10 (
取到另外9個參數)


在批處理中del /f /s /q可以刪除指定目錄下的任何文件,但是不能刪除文件夾,rd /s /q不但可以刪除指定目錄下的文件夾而且還

可以刪除目錄下的所有文件,以前總是以為rd只能刪除文件夾,現在才知道用這個命令還以刪除文件夾


@echo off @echo off
:top :top
if (%1)==() goto end if (%1)==()goto end
shift shift
echo still running echo still running
goto top goto top
:end :end

看到了吧!兩個程序就是第三行的goto前面不一樣,第一個有一個空格,而第二個沒有,就是這個空格所產生的結果就不一樣,第一

個結果是三行still running,而第二個結果是一個無限制的循環,一直不停的顯示still running,所以寫程序的時候一定要注意


errorlevel
若一個程序或DOS命令執行成功,則返回的ERORLEVEL的值為o,否則為1255之間AscII值的任意整數,其值只占一個字節約內存

空間,值得注意的是IF語句中檢驗的ERRORLEVEL值是大于或等于而不是等于,例如語句IF ERRORLEVEL 5檢驗的是ERRORLEVEL>=5

不是ERRORLEVEL=5,因此對于5255之間的任何整數,此語句檢驗結果都是真值。


在變量延遲時要用到setlocal EnableDelayedExpansion
例如:

@echo off
setlocal EnableDelayedExpansion
.......
然后寫要用的代碼

需要注意的是,一旦啟用了變量延遲,就要用!號把變量括起來,而不能用%號。

echo !n!
顯示變量n的值

例如:
@echo off &SETLOCAL ENABLEDELAYEDEXPANSION
set mm=gril&echo !mm!
pause

ping 在批處理中有延時的作用,開始的時候不知道怎么用,后來才發現,每ping一次的時間是一秒,所以寫成ping /n 10 127.1或者

ping /n 10 localhost效果是一樣的,都能起來延時十秒的作用


set

SET /A expression
環境變量替換已如下增強
:
%PATH:str1=str2%
%PATH:~10,5%
%PATH:~-10%
%PATH:~0,-2%

%PATH:str1=str2%這個操作就是把變量%PATH%的里的str1全部用str2替換

例如:
@echo off
set a= bbs.verybat.cn
echo
替換前的值: "%a%"
set var=%a: =qq%
echo
替換后的值
: "%var%"
pause

結果是:替換前的值: " bbs.verybat.cn" 很明顯吧,那個空格被qq給代替啦^-^
替換后的值
: "qqbbs.verybat.cn"
請按任意鍵繼續. . .


@echo off
set a=bbs.verybat.cn
echo
替換前的值: "%a%"
set var=%a:.=
傷腦筋
%
echo
替換后的值
: "%var%"
pause

解釋set var=%a:.=傷腦筋%
set
命令 var變量名 字a是要進行字符替換的變量的值,"."為要替換的值
,
"
傷腦筋"為替換后的值
!
執行后就會把變量%a%里面的"."全部替換為"傷腦筋
"
這就是set的替換字符的很好的功能!先講到這


%PATH:~10,5%

@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause

執行后,我們會發現只顯示了"bs"兩個字母,我們的變量%a%的值不是為bbs.verybat.cn
怎么只顯示了第2個字母和第3個字母"bs",分析一結果我們就可以很容易看出
%PATH:~10,5%
就是顯示變量PATH里指定幾位的值!
分析
set var=%a:~1,2%
set
命令 var變量值 a要進行字符操作的變量 "1"從變量"a"第幾位下一位開始顯示 "2"顯示幾位

和起來就是把變量a的值從第一位開始,把后兩位賦予給變量var

%PATH:~-10% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~-3%
echo %var%
pause


這個的意思是從右往左取三位,把取到的部分給了var ,如果把負號去掉,就成了從左往右去掉三位把剩下的部分給了var

%PATH:~0,-2% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~4,-3%
echo %var%
pause

結果是verybat,這段代碼的意思是,從右去掉三位,把左剩余的部分,從第四位的下一位開始顯示,把顯示的內容給了var

如果改成set var=%a:~3,-3%結果就是.verybat

延遲和set的綜合應用:

@echo off
setlocal enabledelayedexpansion

title I Love Greatwall
set love=I Love Greatwall Forever

for /l %%i in (1,1,24) do (cls
echo. !love:~0,%%i!
ping/n 1 127.1>nul 2>nul)
pause

我覺得這段代碼很意思,do里面的命令主要是分三塊但是這三塊不能在同一行,分三行寫.因為它們是不同的命令,要想寫在一行的

話要加&,寫好后為for /l %%i in (1,1,24) do (cls &echo. !love:~0,%%i! &ping/n 1 127.1>nul 2>nul)


for
DOs提示符下可直接使用FOR語句,用法的區別在于必須把%%variable寫成%variable

關于FOR語句的使用方法,歸納如下:
(1)
為了在各種DOS版本下都能運行,%%vart6le的變量必須為單個字符,應避
免使用%%o一%%9作為變量。
(2)FOR
%%variaNeIN tnle s)command%%variable其中File set必須放在
括號內,文件的個數沒有限制,只要不超過D05命令行127個字符的限制即可,文件之
間用空格或逗號作為分隔符分開,文件名可以使用通配符。
(3)FoR
語句中后面的變量有時可省略,如:
FOR
%%a IN(*.BAK)D0 DIR
(4)FOR
語句的結尾如果執行另一個批處理程序,執行結束后,不再返回FOR

FOR /D %%variable IN (set) DO command /D參數只能顯示當前目錄下的目錄名字

@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盤根目錄執行,就會把C盤目錄下的全部目錄名字打印出來,而文件名字一個也不顯示!

@echo off
for /d %%i in (???) do @echo %%i
pause
這樣的話如果你當前目錄下有目錄名字只有1-3個字母的,就會顯示出來,沒有就不顯示了

這里解釋下*號和?號的作用,*號表示任意N個字符,?號只表示任意一個字符

FOR /R [[drive:]path] %%variable IN (set) DO command

它可以把當前或者你指定路徑下的文件名字全部讀取,注意是文件名字

@echo off
for /r c:/ %%i in (*.exe) do @echo %%i
pause

C盤根目錄,和每個目錄的子目錄下面全部的EXE文件都列出來了


@echo off
for /r %%i in (*.exe) do @echo %%i
pause

以當前目錄為搜索路徑,顯示當前目錄的全部EXE文件列出來!


for /L %% Variable in (Start#,Step#,End#) do Command

@echo off
for /l %%i in (1,1,5) do start cmd
pause

看上面的start step end就知道是什么意思了吧,開始,結束,步階,按一步一個的話,就會總有六個cmd跳出來五個
設置默認的控制臺前景和背景顏色。


for /F "ParsingKeywords" %% Variable in (FileNameSet) do Command

"ParsingKeywords"
它表示4個參數

eol=c -
指一個行注釋字符的結尾(就一個)
skip=n -
指在文件開始時忽略的行數。

delims=xxx -
指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n -
指每行的哪一個符號被傳遞到每個迭代
for 本身。這會導致額外變量名稱的分配。m-n
格式為一個范圍。通過 nth 符號指定 mth。如果

符號字符串中的最后一個字符星號,
那么額外的變量將在最后一個符號解析之后
分配并接受行的保留文本。
usebackq -
指定新語法已在下類情況中使用:
在作為命令執行一個后引號的字符串并且一個單

引號字符為文字字符串命令并允許在 filenameset
中使用雙引號擴起文件名稱。

例如:新建一個文件名字為test.txt
內容為:

;
哈哈
你好!相信自己一定會成功……
Never Say Die
好啦就這樣吧

@echo off
FOR /F "eol=; tokens=1 delims= " %%i in (test.txt) do @echo %%i
pause

你好!相信自己一定會成功……
Never
好啦就這樣吧

這個命令會讀取在當前目錄下名為test.txt文件中的內容,然后將每一行的內容賦值給變量%%i,然后忽略掉以;號開頭的行,并且以空

格做為分隔符號,打印第每行以空各做分隔符號的第一列

又例如:
@echo off
for /f "tokens=3 delims=- " %%a in ('date /t') do @echo %%a
pause

date /t的結果是:2007-08-22 星期三
所以批處理的結果為:22

@echo off
for /f "tokens=2,3,4 delims=-" %%a in ('date /t') do @echo %%c-%%a-%%b
pause


結果為:-08-22 星期三

總結:以上兩個的結果都是從date /t中以"-"為分隔符,從左往右依次取第三列(這就是第一個的結果22),第二,三,四列(這就是

第二個的結果-08-22 星期三),這個for以后的用處還很大.


FOR
的變量全部列出來:凡是 %~ 開頭的操作符,都是文件名的分離操作

~I - 刪除任何引號("),擴展 %I

這個變量的作用就如他的說明,刪除引號!
我們來看這個例子:

首先我們在桌面建立一個名字為temp.txt文本文件,在里面輸入這些內容
"1111
2222"
"3333"
44"44
然后在建立個BAT文件代碼如下:

FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~i
pause

執行后,我們看CMD的回顯如下:
1111
2222"
3333
44"44
和之前temp.txt中的內容對比一下,我們會發現第一行和第三行的引號都消失了,這就是刪除引號~i的作用了
!
刪除引號規則如下(BAT兄補充
!)
1
、若字符串首尾同時存在引號,則刪除首尾的引號;

2
、若字符串尾不存在引號,則刪除字符串首的引號;
3
、如果字符串中間存在引號,或者只在尾部存在引號,則不刪除


%~fI -
%I 擴展到一個完全合格的路徑名

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi
pause

執行后顯示內容如下
C:/Documents and Settings/Administrator/
桌面/test.bat
C:/Documents and Settings/Administrator/
桌面
/test.vbs
當我把代碼中的 %%~fi直接改成
%%i
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%i
pause

執行后就會顯示這些內容
test.bat
test.vbs

%~dI - 僅將 %I 擴展到一個驅動器號

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di
pause
執行后我CMD里顯示如下

C:
C:
%%~di
作用是,如果變量%%i的內容是一個文件或者目錄名,那么%%~di就會把%%i這文件或者目錄所在的盤符號打印出來!

%~pI - 僅將 %I 擴展到一個路徑

這個用法和上面一樣,他只打印路徑不打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi
pause

/Documents and Settings/Administrator/桌面/

%~nI - 僅將 %I 擴展到一個文件名

只打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni
pause

test

%~xI - 僅將 %I 擴展到一個文件擴展名

只打印文件的擴展名
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi
pause

.vbs
.bat
.txt
.txt
.txt

%~sI - 擴展的路徑只含有短名

打印絕對短文件名
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~si
pause

C:/DOCUME~1/ADMINI~1/桌面/a.vbs
C:/DOCUME~1/ADMINI~1/
桌面
/a2.bat
C:/DOCUME~1/ADMINI~1/
桌面
/q.txt
C:/DOCUME~1/ADMINI~1/
桌面
/test.txt
C:/DOCUME~1/ADMINI~1/
桌面/_討論
_~1.TXT
C:/DOCUME~1/ADMINI~1/
桌面/常用工具

%~aI - %I 擴展到文件的文件屬性

打印文件的屬性
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai
pause

--a------
--a------
--a------
--a------
--a------
dr-------

%~tI - %I 擴展到文件的日期/時間

打印文件建立的日期
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ti
pause

2007-08-21 12:30
2007-08-22 18:40
2007-08-22 12:31
2007-08-22 17:58
2007-08-19 23:23
2007-08-16 14:28

%~zI - %I 擴展到文件的大小

打印文件的大小
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi
pause

76
439
558
64
34614
0
最后一個不是個文件而是一個文件夾,所以顯示為0,其實不為0

%~$PATH:I - 查找列在路徑環境變量的目錄,并將 %I 擴展
到找到的第一個完全合格的名稱。如果環境變量名
未被定義,或者沒有找到文件,此組合鍵會擴展到
空字符串

我們先在桌面建立一個temp.txt文件,里面寫上這些內容
c:/windows
c:/windows/system32
c:/windows/teett

然后在把這些代碼保存為批處理,放在桌面.
FOR /F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i
pause

執行后CMD顯示如下內容
c:/WINDOWS
c:/WINDOWS/system32
ECHO
處于打開狀態。

為什么會這樣呢,還有一行c:/windows/teett?
我們直接在CMD里輸入echo %path% 會顯示
C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem
%%~$PATH:i
也就是在文本里尋找匹配這個PATH變量值的內容,如果里面的內容和PATH變量相同,就打印出來

如果不相同,就顯示一個空行!

COLOR [attr]

attr 指定控制臺輸出的顏色屬性

顏色屬性由兩個十六進制數字指定 -- 第一個為背景,第二個則為
前景。每個數字可以為以下任何值之一:

0 = 黑色 8 = 灰色
1 =
藍色 9 = 淡藍色
2 =
綠色 A = 淡綠色
3 =
湖藍色 B = 淡淺綠色
4 =
紅色 C = 淡紅色
5 =
紫色 D = 淡紫色
6 =
黃色 E = 淡黃色
7 =
白色 F = 亮白色

如果沒有給定任何參數,該命令會將顏色還原到 CMD.EXE 啟動時
的顏色。這個值來自當前控制臺窗口、/T 開關或
DefaultColor
注冊表值。

如果用相同的前景和背景顏色來執行 COLOR 命令,COLOR 命令

echo test>test/x.txt 這句的意思是在test文件夾下往x.txt中寫入test


FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

/V 顯示所有未包含指定字符串的行。
/C
僅顯示包含字符串的行數。
/N
顯示行號。
/I
搜索字符串時忽略大小寫。
/OFF[LINE]
不要跳過具有脫機屬性集的文件。
"string"
指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。


REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data]

KeyName [//Machine/]FullKey
遠程機器的機器名 - 忽略默認到當前機器。

遠程機器上只有 HKLM HKU。
FullKey ROOTKEY/SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey
所選 ROOTKEY 下注冊表項的完整名

/v 所選項之下要添加的值名

/ve 為注冊表項添加空白值名<無名稱>

/t RegKey 數據類型
[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
REG_NONE | REG_EXPAND_SZ ]
如果忽略,則采用 REG_SZ

/s 指定一個在 REG_MULTI_SZ 數據字符串中
用作分隔符的字符
如果忽略,則將 "/0" 用作分隔符

/d 要分配給添加的注冊表 ValueName 的數據

/f 不用提示就強行改寫現有注冊表項

例如:

REG ADD //ABC/HKLM/Software/MyCo
添加遠程機器 ABC 上的一個注冊表項 HKLM/Software/MyCo

REG ADD HKLM/Software/MyCo /v Data /t REG_BINARY /d fe340ead
添加一個值(名稱: Data,類型: REG_BINARY,數據: fe340ead)

REG ADD HKLM/Software/MyCo /v MRU /t REG_MULTI_SZ /d fax/0mail
添加一個值(名稱: MRU,類型: REG_MUTLI_SZ,數據: fax/0mail/0/0)

REG ADD HKLM/Software/MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一個值(名稱: Path,類型: REG_EXPAND_SZ,數據
: %systemroot%)
注意: 在擴充字符串中使用雙百分比符號( %% )

設置屏幕每行顯示字符數和每屏的行數 例如 MODE CONt COLS=80 LINES=25


如果要在批處理中生成一個空的文本文件可以這樣寫

type nul>a.txt

find的參數:
/C
僅顯示包含字符串的行數。
/N
顯示行號。
/I
搜索字符串時忽略大小寫。
這三個是常用的


if
else必須在一行之上,比較運算符有
大于 gtr
大于等于
geq
等于 equ或者
==
小于等于
leq
小于
lss
else
if必須在一行之上,如果有else部分的話,else前面的command部分必須用()括起來。

FINDSTR正則表達式的基本用法

1.findstr . 2.txt Findstr "." 2.txt
從文件2.txt中查找任意字符,不包括空字符或空行

====================

2.findstr .* 2.txt findstr ".*" 2.txt
從文件2.txt中查找任意字符包括空行和空字符

====================

3.findstr "[0-9]" 2.txt
從文件2.txt中查找包括數字09的字符串或行

====================

4.findstr "[a-zA-Z]" 2.txt
從文件2.txt中查找包括任意字符的字符串或行

====================

5.findstr "[abcezy]" 2.txt
從文件2.txt中查找包括a b c e z y字母的字符串或行

====================

6.findstr "[a-fl-z]" 2.txt
從文件2.txt中查找小寫字符a-f l-z的字符串,但不包含g h I j k這幾個字母。

====================

7.findstr "M[abc][hig]Y" 2.txt
從文件2.txt中可以匹配 MahY , MbiY, MahY
…..
====================

8. ^$符號的應用
^
表示行首,"^step"僅匹配 "step hello world"中的第一個單詞

$
表示行尾,"step$"僅匹配 "hello world step"中最后一個單詞

====================

9.finstr "[^0-9]" 2.txt
如果是純數字的字符串或者行便過濾掉,例如2323423423 這樣的字符串,如果是345hh888這樣的形式就不成了。

====================

10.findstr "[^a-z]" 2.txt
同上,如果是純字母的字符串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字符,如果是sdfksjdkf99999這樣的形式,摻

雜著數字就不成了
====================

11.*號的作用
前面已經說過了 ".*"表示搜索的條件是任意字符,*號在正則表達式中的作用不是任何字符,而是表示左側字符或者表達式的重復次

數,*號表示重復的次數為零次或者多次。
====================

12.findstr "^[0-9]*$" 2.txt
這個是匹配找到的純數字,例如 234234234234,如果是2133234kkjl234就被過濾掉了。

Findstr "^[a-z]*$" 2.txt
這個是匹配找到的純字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被過濾掉了

如果在搜索條件里沒有*號,也就是說不重復左側的搜索條件,也就是[0-9] [a-z]那只能匹配字符串的第一個字符也只有這一個字符

,因為有行首和行尾的限制,"^[0-9]$"第一個字符如果是數字就匹配,如果不是就過濾掉,如果字符串是 9 就匹配,如果是98或者

9j之類的就不可以了。
=====================

13. "/<…/>"這個表達式的作用
這個表示精確查找一個字符串,/<sss 表示字的開始位置,sss/>表示字的結束位置

echo hello world computer|findstr "/<computer/>"
這樣的形式

echo hello worldcomputer|findstr "/<computer/>"
這樣的形式就不成了,他要找的是 "computer"這個字符串,所以不可以。

echo hello worldcomputer|findstr ".*computer/>"
這樣就可以匹配了

所學知識的應用:

@echo off
reg add HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /v
該休息啦
.bat /t reg_sz >nul
@echo off
:start
for /f "delims=: tokens=2" %%i in ('systeminfo ^| findstr "
系統啟動時間
"') do set a=%%i
set var=%a:~2,1%
if var geq 2 (goto alert) else goto start
:alert
echo msgbox "
該休息啦
">alert.vbs
call alert
del /f/q alert.vbs,time.txt
pause


這個是我自己寫的,其實也沒有什么用就是把自己的東西串一下,從這段代碼中我學到了不少東西,在if的時候一定記得要在else

command加括號,還有就是^的使用,看看上面,它就是顯示它后面的符號,使它們失去功能,還有好多,呵呵,都在程序里啦。
還有就是pan斷大小的使用
其中,比較運算符可以是:

equ - 等于
neq -
不等于
lss -
小于
leq -
小于或等于
gtr -
大于
geq -
大于或等于

在一行上寫上三個echo.相當于空三行echo.&echo.&echo.這是正確的格式,就是空三行

SET /P verybat= 請選擇要進行的操作:
IF /I "%verybat:~0,1%"=="1" GOTO 1
IF /I "%verybat:~0,1%"=="2" GOTO 2

@echo off
echo
正在準備生成加密的jpg圖片

echo
請將要加密的圖片改名為
1.jpg
echo
請將要密語保存為
2.txt
echo
按任意鍵開始加密

pause
Copy 1.jpg/b + 2.txt/a 3.jpg
echo
加密結束

echo
程序將生成加密圖片
3.jpg
pause
以上是圖片加密的代碼,看看很簡單的吧呵呵

用到了copy的參數
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要復制的文件。
/A
表示一個 ASCII 文本文件。
/B
表示一個二進位文件。
/D
允許解密要創建的目標文件
destination
為新文件指定目錄和/或文件名。
/V
驗證新文件寫入是否正確。
/N
復制帶有非 8dot3 名稱的文件時,
盡可能使用短文件名。
/Y
不使用確認是否要改寫現有目標文件
的提示。
/-Y
使用確認是否要改寫現有目標文件
的提示。
/Z
用可重新啟動模式復制已聯網的文件。

命令行開關 /Y 可以在 COPYCMD 環境變量中預先設定。
這可能會被命令行上的 /-Y 替代。除非 COPY
命令是在一個批文件腳本中執行的,默認值應為

在改寫時進行提示。

要附加文件,請為目標指定一個文件,為源指定
數個文件(用通配符或 file1+file2+file3 格式)。

?

總結

以上是生活随笔為你收集整理的批处理的一些小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。