windows下的批處理bat檔案和Linux下的shell檔案的含義
原文:https://www.cnblogs.com/caiguodong/p/10308255.html
shell(Linux、Solaris) | bat(windows) | 含義 |
# | rem | 註釋行 |
/【directory】/【directory】/.../【directory】/ | 【disk】:\【directory】\【directory】\...\【directory】\ | path |
【變數】=【檔名】,LBSAM | set 【變數】=【檔名】,BSAM | 把檔名賦值給變數 |
【變數】=【設定值】 【變數】="【設定值】" 【變數】='【設定值】' 【變數】=【設定值】; export 【變數】 export 【變數】=【設定值】 |
set 【變數】=【設定值】 | 變數的賦值 |
unset 【變數】 | set 【變數】= | 變數的初始化 |
${【變數】} $【變數】 |
%【變數】% |
變數的引用 ※如果變數在if語句和for迴圈中被賦值了的話, 在引用的時候需要用!【變數】!。 ※如果使用!【變數】!,要新增(延遲環境變數) setlocal enabledelayedexpansion |
$【數字】
${【數字】} |
%【數字】 | shell/bat啟動的時候,傳入的第【數字】個引數
$1/%1 →啟動時傳入的第一個引數 |
【變數】=`basename $0 .sh` | set 【變數】=%~n0 |
本shell/bat的檔名字賦值給變數 test1.sh/test.bat → 變數=test |
【變數】=`dirname 【檔案】` | for %%i in ("【檔案】") do (set 【變數】=%%~dpi) |
取得所在檔案路徑賦值給變數 例 : shell: path1=`dirname /home/dir1/dir2/test.txt` ↓ path1=/home/dir1/dir2 bat : for %%i in ("D:\dir1\dir2\test.txt") do ( set path2=%%~dpi ) ↓ path2=D:\dir1\dir2 |
【變數】=`basename 【檔案】` | for %%i in ("【檔案】") do (set 【變數】=%%~nxi) | 取得所在檔案路徑賦值給變數
例 : shell: filename1=`dirname /home/dir1/dir2/test.txt` ↓ filename1=test.txt bat : for %%i in ("D:\dir1\dir2\test.txt") do ( set filename2=%%~dpi ) ↓ filename2=test.txt |
【變數】=$? | set 【變數】=%errorlevel% | 上一個命令執行的結果賦值給變數 |
if [ 【條件】 ]; then 【處理1】 else 【處理2】 fi |
if 【條件】 ( 【處理1】 ) else ( 【處理2】 ) |
※shell裡面的if語句(if test 【條件】)和 (if [ 【條件】 ])意思一樣 |
if [ $【變數】 -eq 【數值】 ]; then | if %【變數】% equ 【數值】 ( | 等於 |
if [ $【變數】 -ne 【數值】 ]; then | if %【變數】% neq 【數值】 ( | 不等於 |
if [ $【變數】 -lt 【數值】 ]; then | if %【變數】% lss 【數值】 ( | 小於 |
if [ $【變數】 -le 【數值】 ]; then | if %【變數】% leq 【數值】 ( | 小於等於 |
if [ $【變數】 -gt 【數值】 ]; then | if %【變數】% gtr 【數值】 ( | 大於 |
if [ $【變數】 -ge 【數值】 ]; then | if %【變數】% geq 【數值】 ( | 大於等於 |
if [ $【變數】 = "【字串】" ]; then | if %【變數】%==【文字列】 ( | 等於 |
if [ $【變數】 != "【字串】" ]; then | if not %【變數】%==【文字列】 ( | 不等於 |
if [ -e 【檔案 or 資料夾】 ]; then | if exist 【檔案 or 資料夾】 ( | 檔案或資料夾存在 |
if [ ! -e 【檔案or 資料夾】 ]; then | if not exist 【檔案 or 資料夾】 ( | 檔案或資料夾不存在 |
if [ -f 【物件】 ]; then | for %%A in ("【物件】") do (set 【變數】=%%~aA) if "%【變數】:~0,1%"=="-" ( |
物件是檔案 ※shell裡面如果是if [ ! -f 【物件】 ]; then的時候,對應的bat是 if not "%【變數】:~0,1%"=="-" ( 意思是判斷物件是否是檔案以外 |
if [ -d 【物件】 ]; then | for %%A in ("【物件】") do (set 【變數】=%%~aA) if "%【變數】:~0,1%"=="d" ( |
物件是資料夾 |
if [ -s 【檔案】 ]; then | for %%A in ("【檔案】") do (set 【變數】=%%~zA) if %【變數】% gtr 0 ( |
檔案的size大於0 |
`date '+%Y%m%d'` | %date:~0,4%%date:~5,2%%date:~8,2% | 2018/9/30 → 20180930 |
find 【路徑】 -mtime +【數字】 -name "*" -type f -exec rm -f {} \; |
PowerShell -Command "Get-ChildItem '【路徑】' -force | Where-Object {($_.Mode.Substring(0,1) -ne 'd') -and ($_.LastWriteTime -lt (Get-Date). AddDays(-【數字+1】))} | Remove-Item -force" |
將指定路徑下更新日期在【數字+1】天以前的檔案刪除 例如:把路徑下更新日期在7天之前的檔案刪除 shell: find 【路徑】 -mtime +6 -name "*" -type f -exec rm -f {} \; bat:PowerShell -Command "Get-ChildItem '【路徑】' -force | Where-Object {($_.Mode.Substring(0,1) -ne 'd') -and ( $_.LastWriteTime -lt (Get-Date).AddDays(-7))} | Remove-Item -force" |
source 【****.sh】 【****.sh】 |
call 【****.bat】 | 呼叫其它檔案 |
`date '+%Y/%m/%d %H:%M:%S'` | %date% %time:~0,8% | 2018/8/24 8:45:30 → 2018/08/24 08:45:30 |
rm 【檔案】 | del /f /q 【檔案】 | 刪除 |
rm -f 【檔案】 | del /f /q 【檔案】 | 刪除 |
rm -r 【檔名 or 資料夾】 rm -rf 【檔名 or 資料夾】 |
※檔案的時候 del /f /q 【檔案】 ※資料夾的時候 rmdir /s /q 【資料夾】 |
刪除 |
【命令】 | tee -a 【log檔案】 | DEL 【臨時檔案】 命令> 【臨時檔案】 2>&1 TYPE 【臨時檔案】 TYPE 【臨時檔案】 >>【log檔案】 |
|