DOS批處理命令 引數取得

2022-03-05 12:36:03 字數 4177 閱讀 1003

引數傳遞對程式來說,是乙個很重要的事情,所以,獲得傳遞的引數是很重要的,接下來,我們來**下獲得傳遞的引數的n種方式。

1、%n  獲得傳遞的第n個引數(n最大為9)

就是傳遞過去的引數原樣值(並且忽略前後導空格)

@echo off

echo %1

執行結果為(a.bat canshu)

canshu

2、%~1  也就是說,把第乙個引數的引用字串給去掉(兩段的引號),如果只有一側有的話,就刪除有的那一側。

すべての引用句 (") を削除して、%1 を展開します。

例如:"1"2"➡1"2    "1"2➡1"2    1"2"➡1"2    1"2➡1"2

@echo off

echo %~1

執行結果:

f:\tmp>a.bat "1"2"

1"23、%~f1   獲取引數1指定的路徑的全路徑/如果是只指定檔名的話,就是當前路徑 + 引數1表示的全路徑名

%1 を完全修飾パス名に展開します。

例如引數1是c:\users\liuhongying\tmp\test.txt的時候,結果就是c:\users\liuhongying\tmp\test.txt

例如當前路徑是f:\tmp\,傳遞的引數是1234,那麼,得到的結果就是f:\tmp\1234

@echo off

echo %~f1

執行結果:

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

c:\users\liuhongying\tmp\test.txt

f:\tmp>a.bat 1234

f:\tmp\1234

那如果沒有引數1的時候呢?輸入結果是什麼呢?然我們來看看

f:\tmp>a.bat

echo は です。

也就是說,如果這個引數本身就不存在的時候,取得的東西就是空的了。

4、%~d1   獲取引數1指定的路徑的碟符名/如果只指定檔名,那麼結果就是當前路徑的碟符名

%1 をドライブ文字だけに展開します。

例如引數1是c:\users\liuhongying\tmp\test.txt的時候,結果就是c:

例如當前路徑是f:\tmp\,那麼得到的結果就是f:

@echo off

echo %~d1

執行結果:

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

c:f:\tmp>a.bat 1234

f:那如果沒有引數1的時候呢?輸入結果是什麼呢?然我們來看看

f:\tmp>a.bat

echo は です。

也就是說,如果這個引數本身就不存在的時候,取得的東西就是空的了。

5、%~p1  獲取引數1指定的路徑的路徑名/如果只指定檔名,那麼結果就是當前檔案的路徑名

%1 をパスだけに展開します。

例如引數1是c:\users\liuhongying\tmp\test.txt的時候,結果就是\users\liuhongying\tmp\

例如當前路徑是f:\tmp\,那麼得到的結果就是\tmp\

@echo off

echo %~p1

執行結果為:

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

\users\liuhongying\tmp\

f:\tmp>a.bat 1234

\tmp\

那如果沒有引數1的時候呢?輸入結果是什麼呢?然我們來看看

f:\tmp>a.bat

echo は です。

也就是說,如果這個引數本身就不存在的時候,取得的東西就是空的了。

6、%~n1    獲取引數1指定的路徑的檔名/如果只指定檔名,那麼結果就是這個檔名

%1 をファイル名だけに展開します。

例如引數1是c:\users\liuhongying\tmp\test.txt,那麼路徑的檔名是test

@echo off

echo %~n1

執行結果:

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

test

f:\tmp>a.bat test.txt

test

7、%~x1  就是表示檔案的副檔名(包括分隔符的句點)

%1 をファイル拡張子だけに展開します。

@echo off

echo %~x1

執行結果

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

.txt

f:\tmp>a.bat test.txt

.txt

8、%~s1 獲取指定路徑的短路徑

展開されたパスは、短い名前だけを含みます。

什麼短路徑呢?短路徑就是使用一種命名規範來縮短表示路徑的長度。

短路徑名實在dos下的命名規則

在dos中,主檔名的長度不能超過8個字元

如果超過了8個 系統自動擷取前6個字元,然後加上~1

如果前6個字元一樣了,那麼路徑名就按照字串排序,然後就依次使用~2,~3

例如路徑名為c:\users\liuhongying\tmp\test.txt短路徑就是c:\users\liuhon~1\tmp\test.txt

@echo off

echo %~s1

執行結果

f:\tmp>a.bat c:\users\liuhongying\tmp\testtesttest.txt

c:\users\liuhon~1\tmp\testtesttest.txt

由此看來,短路徑只是縮短路徑部分。

9、%~a1 獲取引數1指定的檔案的屬性(如果檔案不存在,結果就是空的)

%1 をファイル屬性に展開します。

@echo off

echo %~a1

執行結果

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

--a--------

*這裡a代表的是存檔檔案屬性,具體還有什麼別的,在那個位置,如果以後有用到在總結吧。

10、%~t1  獲得檔案的更新日期和時間

%1 をファイルの日付/時刻に展開します。

@echo off

echo %~t1

執行結果

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

2013/07/27 01:38

11、%~z1  獲得引數1指定檔案的大小(byte數)

%1 をファイルのサイズに展開します。

@echo off

echo %~z1

執行結果

f:\tmp>a.bat c:\users\liuhongying\tmp\test.txt

1712、%~$path:1   在path指定的路徑中檢索引數1指定的檔案,如果找到了就返回全路徑,否則,就返回空。

@echo off

set path=c:\users\liuhongying\tmp\

echo %~$path:1

執行結果

f:\tmp>a.bat test.txt

c:\users\liuhongying\tmp\test.txt

@echo off

set path=c:\users\liuhongying\

echo %~$path:1

執行結果

f:\tmp>a.bat tmp\test.txt

c:\users\liuhongying\tmp\test.txt

由此可見,即path + 引數1拼成的字串指定的檔案如果存在,就返回該全路徑。

f:\tmp>a.bat test.txt

echo は です。

由以上執行結果可以看出,檢索不包括下層目錄。可以進一步驗證上乙個驗證結果。

獲取引數值的地方已經分析完了。

不過,這些方法可以有很多種組合方式。進一步的應用就要看你使用的靈活性了。

批處理Dos命令

來自vista 有關某個命令的詳細資訊,請鍵入 help 命令名 assoc 顯示或修改副檔名關聯。attrib 顯示或更改檔案屬性。break 設定或清除擴充套件式 ctrl c 檢查。bcdedit 設定啟動資料庫中的屬性以控制啟動載入。cacls 顯示或修改檔案的訪問控制列表 acl call...

DOS批處理命令 命令

命令是乙個禁止當前語句回顯的簡單命令。語法 command command 是要遮蔽的批處理命令 例如執行包含以下內容的bat檔案 echo onecho hello 1 echo echo hello 2 執行的結果是 f tmp echo hello 1 hello 1 hello 2 可見,e...

dos和批處理命令

這些是xp下的dos和批處理命令,dos用的可能不是太多,寫批處理的時候還是需要的,備查!assoc 顯示或修改副檔名關聯。at 計畫在計算機上執行的命令和程式。attrib 顯示或更改檔案屬性。break 設定或清除擴充套件式 ctrl c 檢查。cacls 顯示或修改檔案的訪問控制列表 acls...