bat語法

註釋

:: 註釋無回顯
rem 註釋有回顯

 關閉和開啓回顯

:: 關閉回顯
@echo off
echo abc
:: 開啓回顯
echo on
echo 123

 

 查看命令幫助說明

rd /?

 

 目錄操做

建立目錄(包含子目錄)
md mp3\a\b\c

刪除空目錄
rd mp3

/q安靜模式 /s遞歸
rd /q/s mp3

重命名目錄 mp3源 mp3bak目標
rename mp3 mp3bak

 

文件操做 

:: 建立文件cc.txt
cd.>cc.txt

:: 往文件裏寫數據
echo this is ceshi > ceshi.txt

:: 查看文件內容
type ceshi.txt


:: 刪除文件
:: 刪除指定文件,不能是隱藏、系統、只讀文件
del d:\test.txt            

:: #刪除 d:\temp 文件夾裏面的全部文件,包括隱藏、只讀、系統文件,不包括子目錄
del /q/a/f d:\temp\*.*   

::  #刪除 d:\temp 及子文件夾裏面的全部文件,包括隱藏、只讀、系統文件,不包括子目錄
del /q/a/f/s d:\temp\*.*  


copy 拷貝文件oracle

例:copy key.txt c:\doc  // 將當前目錄下的key.txt拷貝到c:\doc下(若doc中也存在一個key.txt文件,會詢問是否覆蓋)this

例:copy jobs c:\doc  // 將當前目錄下jobs文件夾中文件(不遞歸子目錄)拷貝到c:\doc下(若doc中也存在相應的文件,會詢問是否覆蓋)spa

例:copy key.txt c:\doc\key_bak.txt  // 將當前目錄下的key.txt拷貝到c:\doc下,並重命名爲key_bak.txt(若doc中也存在一個key_bak.txt文件,會詢問是否覆蓋)code

例:copy /Y key.txt c:\doc  // 將當前目錄下的key.txt拷貝到c:\doc下(不詢問,直接覆蓋寫)blog

例:copy key.txt +  // 複製文件到本身,其實是修改了文件日期排序

例:copy /Y key1.txt + key2.txt key.txt  // 將當前目錄下的key1.txt與key2.txt的內容合併寫入key.txt中(不詢問,直接覆蓋寫)遞歸

例:copy /B art_2.7z.* art_2.7z    // 將當前目錄下的art_2.7z.開頭的全部文件(按照名稱升序排序)依次合併生成art_2.7ztoken

例:copy /B art_2.7z.001+art_2.7z.002 art_2.7z    // 將當前目錄下的art_2.7z.00一、art_2.7z.002文件合併生成art_2.7z圖片

xcopy  更強大的複製命令rem

例:xcopy c:\bat\hai d:\hello\ /s /h /e /f /c /y   // 將c:\bat\hai中的全部內容拷貝到d:\hello中  注意:須要在hello後加上\  表示hello爲一個目錄,不然xcopy會詢問hello是F,仍是D,/y不詢問

例:xcopy c:\bat\hai d:\hello\ /d:12-29-2010  // 將c:\bat\hai中的2010年12月29往後更改的文件拷貝到d:\hello中

move 移動文件

例:move *.png test  // 將當前目錄下的png圖片移動到當前目錄下test文件夾中 (若test中也存在同名的png圖片,會詢問是否覆蓋)

例:move /Y *.png test  // 將當前目錄下的png圖片移動到當前目錄下test文件夾中 (不詢問,直接覆蓋寫)

例:move 1.png d:\test\2.png  // 將當前目錄下的1.png移動到d盤test文件夾中,並重命名爲2.png (若test中也存在同名的png圖片,會詢問是否覆蓋)

例:move test d:\new  // 若d盤中存在new文件夾,將當前目錄下的test文件夾移動到d盤new文件夾中;若不存在,將當前目錄下的test文件夾移動到d盤,並重命名爲new

 

date時間

:: 顯示時間 (2018/09/20 週四)
set DT=%date%
echo %DT%

::顯示時間 年(2018),說明:從開頭取4個
set year=%date:~,4%
echo %year%

::顯示時間月(09),說明:從第5個起取2個
set month=%date:~5,2%
echo %month%

::顯示時間日(20),說明:從第8個起起2個
set day=%date:~8,2%
echo %day%

:: 顯示時間(16:23:13.56)
echo %time%

:: 顯示時(16或0x)
set time_hh=%time:~0,2% 
if /i %time_hh% LSS 10 (set time_hh=0%time:~1,1%)
echo %time_hh%

:: 顯示分
set time_mm=%time:~3,2%
echo %time_mm%

:: 顯示秒
set time_ss=%time:~6,2%
echo %time_ss%

:: 顯示20180920_162335
set time_hh=%time:~0,2% 
if /i %time_hh% LSS 10 (set time_hh=0%time:~1,1%) 
set DT=%date:~,4%%date:~5,2%%date:~8,2%_%time_hh:~,2%%time:~3,2%%time:~6,2%
echo %DT%

 刪除10天前的文件

set BakDir="E:\backup\oracle"
forfiles /p %BakDir% /s /m *.* /d -10 /c "cmd /c del @file"

 if else

:: 111.txt 存在 就刪除
if exist 111.txt del 111.txt

:: 111.txt 存在就複製一份111bak.txt
echo this is ceshi > 111.txt
if exist 111.txt copy /y 111.txt 111bak.txt

:: 存在和不存在
if exist d:\111.txt (echo 111.txt存在) else ( echo 111.txt 不存在) ::
if else set abc=1234 if %abc%== 123 ( echo == echo ==2 ) else ( echo != echo !=2 )

 

for

===/d遍歷目錄

:: 循環遍歷目錄
for /d %%i in (c:\*) do echo %%i

:: *正則批配任意字符  ?批配一個字符
for /d %%i in (d:\b??) do echo %%i


:: ====/r 遞歸遍歷文件 in裏能夠正則批配文件名
for /r d:\bat %%i in (*) do @echo %%i 


:: ====/l 迭代數值範圍 (1,1,5)這個參數也就是表示從1開始每次加1直到5終止
for /l %%i in (1,1,5) do (
    @echo %%i 
)


::========/f 
::文件內容
::第1行1 第1行2 第1行3
::第2行1 第2行2 第2行3
::第3行1 第3行2 第3行3
::第4行1 第4行2 第4行3

:: 讀寫文件全部內容,內容裏有空格會斷
for /f %%i in (111.txt) do echo %%i

:: 空格爲分隔 顯示第1列
for /f "delims= " %%i in (111.txt) do echo %%i

:: 空格爲分隔 顯示第2列
for /f "tokens=2 delims= " %%i in (111.txt) do echo %%i

:: 空格分隔顯示2 3 列 %%i爲列1 %%j爲列2  i和j要是連續的字母
for /f "tokens=2,3 delims= " %%i in (111.txt) do echo %%i %%j
相關文章
相關標籤/搜索