在cmd窗口中複製時,右鍵選標記,而後再選擇此時選擇區域就變白了。而後要麼直接拖到要粘貼的地方,要麼直接按回車存到剪貼板裏。c++
一、循環導入文件夾下面的文件到數據庫中sql
cd /d D:/Program Files/PostgreSQL/9.2/bin
for /f "delims=" %%i in ('dir /b *.csv') do
(
echo '%%~dpi%%~nxi'>>all.txt
psql -h 192.168.0.231 -U ***-d *** -p 5432 -c "\copy mrs_1 from '%%~dpi%%~nxi' with CSV header"
)
echo '導入數據結束!'
pause數據庫
爲何上面的都用的是雙%%?我一直是在命令行中敲的。發現倆%會報錯。才知道命令行中只須要一個百分號就好了。express
二、start 調用外部程序。該外部程序在新窗口運行,批處理程序繼續往下執行
例 start explorer f:\
call命令是用來調用具備bat或者cmd後綴的文件名。網絡
三、pushd和popd切換當前目錄tcp
四、md 建立一個文件夾。del刪除文件。rd刪除目錄。md是makedir的簡稱和md做用同樣。spa
五、dir c:\|find "txt" 打印出c盤下的且包含txt的文件(夾)名命令行
六、echo test ^>1.txt
結果則是:test > 1.txt 因此^是轉義字符。。^還能夠用做續行符。排序
七、這裏&兩邊的命令是順序執行的,從前日後執行token
dir z:\ & dir y:\ & dir c:\ 當第一個命令執行失敗了,也不影響後邊的命令執行
dir z:\ && dir y:\ && dir c:\ 第一個命令失敗時,後邊的命令也不會執行
在dos下的copy a.txt b.txt /y 至關於將a.txt複製一份存爲b.txt不加/y時若是原來存在b.txt會提示是否覆蓋b.txt的提示 仍是得按y表示yes
八、||這個命令的用法和&&幾乎同樣,但做用恰好相反:利用||執行多條命令時,當遇到一個執行正確的命令就退出此命令組合,再也不繼續執行後面的命令
九、知作別人主機的ip想知道其mac地址 用arp -a ip其實 nbtstat也能夠看出來其mac地址nbtstat -A ip這個命令是用來查計算機名的(能夠再電腦屬性更改的實名制名字)。
(1)netstat命令是顯示協議統計信息和當前tcp/ip網絡鏈接的 加上-o後會多顯示一列即跟端口號對應的PID
(2)tasklist /V 顯示的是進程名、端口號、內存使用、用戶名等具體信息。因此能夠從netstat中找到pid而後用該pid在tasklist中找到進程名。
(3)刪除某個進程:命令格式:ntsd -c q -p pid 按進程號殺;ntsd -c q -pn ***.exe 按進程名殺;taskkill /pid pid /f 按進程號殺。其中/f是強行殺掉的意思。
十、IF命令
(1)IF [NOT] ERRORLEVEL number command 當errorlevel爲0時說明上一句命令的執行結果是正確的。
有的資料上說 這種寫法指errorlevel >= 0時執行命令 若要等於0才執行則用if %errorlevel% == 0 (do something)
(2)IF [NOT] string1==string2 command
當比較string1和string2時若是不想區分大小寫那麼就在if 後面加個/i
(3)IF [NOT] EXIST filename command
if中還有一些判斷數字大小的符號
EQU - 等於 NEQ - 不等於 LSS - 小於 LEQ - 小於或等於 GTR - 大於 GEQ - 大於或等於
我以爲仍是直接用大於小於號方便。。。
(4)對於if else語句得按下列格式
IF EXIST filename (
del filename
) ELSE (
echo filename missing
)
這個例子裏面有兩點必須遵照<1>左括號必須和if或者else在同一行。否則會報語法不正確的提示
<2>else 必須和if中的最後一句在一行。。否則會報else不是內部或外部命令的提示。
十一、date 顯示當前日期,提示輸入新日期。若是隻想看當前日期不想輸入新日期。能夠 加個/t和time的用法同樣
time /t 只顯示當前時間而不提示輸入新時間
十二、sort排序命令能夠排文件能夠排命令結果,一個是用 < 從文件讀,一個是用|排序前面命令的結果
例sort < list.txt > alphlist.txt find "Jones" maillst.txt | sort
sort輸出排序結果到文件中能夠利用/o後面加文件 而不用重定向
1三、more命令:能夠直接單獨用也能夠在管道符後面用來一屏屏顯示命令結果
more後面帶/s參數表示把多個空行輸出成一個空行
more 後面的文件能夠是多個按空格分開,它會一個文件接一個文件的顯示
當使用more後會出來——More——這時要是輸入=號就會顯示如今顯示到第多少行了.按q會退出.按F會從下一個文件開始顯示.最基本的是空格顯示下一屏,回車顯示下一行
1四、find命令:
find [/v] [/c] [/n] "string" [[drive:][path]filename[...]] 省略號表示能夠在多個文件中查找
參數
/v 顯示未包含指定字符串的全部行。
/c 只顯示包含指定字符串的行數。
/n 將文件行號置於每行開頭。
/I 指定搜索不區分大小寫。
1五、批處理的註釋:有兩種
(1)rem 後面跟的是程序的註釋命令.
(2)::也能夠用做註釋,其實若是一個後面緊跟字母或者數字則是用於goto語句跳轉的地方,因此:後面跟非字母或數字均可以用做註釋。
1六、echo和@
其中的echo off 和命令前加@,這倆命令若是在cmd窗口中輸就看不出來效果,只能看出來前面的盤符路徑\>不見了全是黑屏了。因此只有在bat文件中用上這倆命令才能看出來效果,由於在執行bat文件時,每一句命令都會先顯示在cmd窗口中而後再出來結果,因此這個時候echo off 或者前面加@就能夠看出來只顯示執行結果而沒有命令顯示。
echo off 將之後的命令屏蔽顯示,但它自身沒法屏蔽,因此一般在echo off前面要加一個@
1七、PAUSE暫停鍵至關於c++裏面的#include<stdlib> system(pause);
運行顯示:
請按任意鍵繼續. . .
1八、title 用來修改cmd窗口的名字。好比title houjiao 那個黑框的左上角名字就成houjiao了
1九、COLOR 後面由兩個連着的十六進制數字構成。第一個十六進制表示cmd窗口的背景顏色,第二個十六進制表示cmd窗口中
0到7是由黑色、藍色、綠色、湖藍、紅色、紫色、黃色、白色
8到F是對應的上述顏色的淡色版
20、set這個命令不只能夠設置環境變量還能夠設置自定義變量,還能夠進行字符串處理是個硬角色。
(1)set的用法SET [variable=[string]] 或者SET /P variable=[promptString]其中/p指的是promptstring是提示符而不是真正bariable的值。真正的值是須要用戶下來輸入的。跟scanf的做用同樣。那怎麼樣設置一個變量用來進行表達式計算呢?用set /A variable+=1(至關於variable=variable+1) 這時會把等於號後面的當表達式而不是字符串。當定義變量後若是要用該變量則須要用%%將變量名夾在中間。
當用/a時 若是等於號後面的是邏輯運算好比&時那不能直接用1&1而應該給&加上雙引號。上面的用法能夠用一個例子表示set /p hj=please input expression 按回車後 輸入1"&"1 按回車後 set /a result=%hj% 再按回車。。就會看到結果。
(2)用set處理字符串:
<1>首先能夠進行字符串替換 例如先初始化一個變量a:set a= bbs. verybat. cn
將a中的空格刪掉 則能夠set %a: =%就好了,解釋一下%a:str1=str2%就是把變量%a%的裏的str1所有用str2替換.
<2>其次能夠進行字符串截斷 例如先初始化一個變量b:set b=bbs.verybat.cn字符串截斷的所有用法爲下面5種能夠將~當作截斷字符串的標誌:
%b:~1,2% =「bs」 偏移量1,從第二位開始向右取2 位
%b:~-3% =「.cn」 從倒數第三位日後取完。
%b:~3% =「.verybat.cn」 從正數第三位日後取完。(只有一個參數說明後面的參數默認爲取到結尾)
%b:~0,-3% =「bbs.verybat」 從開始取到倒數第三個。
%b:~2,-3% =「s.verybat」 偏移爲2,從第三個開始取到倒數第三個。
2一、變量延遲
假設有這麼個bat
@echo off
set a=4
set a=5 & echo %a%
pause
那麼結果是4。。。而不是五。這就是變量延遲。指的是變量的值只從該一行命令上面的賦值得來。
至於爲何我也不知道。。因此這時候須要啓用變量延遲,固定的命令是這麼寫的setlocal enabledelayedexpansion要結束變量延遲則用 endlocal就能夠。
2二、各類符號
其中逗號、分號都是和空格的做用同樣,沒事就別用這些了空格就夠了我以爲,而感嘆號是在變量延遲問題中用來包變量的。即把%a%寫成!a!但是我在開啓變量延遲以後仍是用的%a%也沒有錯,
反而!a!報錯。。不知道爲啥了反正之後都用百分號就好了。
小括號中的命令會被當作是一條命令。能夠在for語句和if語句中使用也能夠單獨使用。
雙引號是字符串界定符加上雙引號字符串中就能夠加空格之類的。
2三、for循環
格式:FOR 參數 %%變量名 IN (SET) DO 執行的命令
其中SET指的是相關文件或命令命令用單引號括起來,相關文件用字符串括起來。
for的參數有4個分別爲/d /r /l /f
(1)/d 參數:在SET中有通配符*或?時,只是循環執行SET中的文件夾名字而不會執行文件夾中的文件。
(2)/r 參數:這個參數後面得加目錄,一樣當SET中有通配符時他會把/r 後面指定的目錄及其下面的全部子目錄中與set相符合的全部文件名都列舉出來。可是/r 在set中沒有通配符時還會作操做就是將全部含有該文件的目錄都列出來。例如for /r c:\ %%i in (*.exe) do echo %%i
(3)/l參數:其中的SET就須要換成三個用逗號隔開的數字分別表明start,step,end。表示從數字start開始到end結束步長爲step來設置變量。好比for /l %%i in (1,1,5) do start cmd就會打開5個cmd窗口。
(4)/f參數:這個參數是讀取文件中最經常使用的一個也是最複雜的一個
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]其中file-set是文件名不能有空格
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]其中string表示字符串
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]單引號表示執行命令
option有5個參數用一個例子來講明就是
FOR /F "usebackq eol=; tokens=1,3* delims=, " %%i in ("program files") do echo %%i %%j %%k
其中usebackq參數表示後面雙引號引的是文件名而不是字符串。
eol=;表示跳過以分號開頭的行不讀。
tokens=1,3* 表示按照後面的逗號和空格將一行分爲若干段,將第一段賦值給%%i,將第三段賦值給%%j,將後面全部的段賦值給%%k。
delims=, 表示按,和 分割行,其中的空格必須放在最後,不然會報錯。那個*還能夠寫成4-10意思是第四段到第十段。
在for中變量能夠替換爲一些其餘的寫法,做用也不同,具體的for /? 而後再最後面一屏會看到。常常用的是倆%~dpi其中i是for原本的變量。意思是將%i擴充到一個驅動器號和路徑。若是原來%i是一個文件,則你echo 後就會顯示哪一個盤哪一個目錄下的文件。
後續學到其餘的再進行總結補充。 -jimmy-hou-