dos 批處理賦值 20

2025-03-30 01:30:23 字數 4484 閱讀 1088

dos 批處理賦值

1樓:網友

在命令列輸入dir 得到碧緩羨的悔拍結果是檔名 不是變數。

命令哪陵行方式下輸入的是命令 輸出是命令結果。

和程式設計是不一樣的。

dos批處理下自動給環境變數賦值的問題

2樓:網友

1 使用者定義的變數稱之為環境變數不妥, 因為所設定的變數僅是在當前cmd視窗下有效,也並非定義某種環境。

2 應該說cmd提供給變數賦值僅乙個命令,那就是set

3 set 命令給變數賦值有三種基本形式,不加引數的和加 /p 及/a 其中,set/p 除了能接收鍵盤輸入值外,還提供了你所說的形式,把乙個檔案的第一行賦給變數, 而set/a 兼計算功能,將結果(數字型)賦給變數,且可一條命令(不用連線命令)給多個變數賦值。

4 按道理說用管道命令是可以代替使用者輸入的,正如你所說的實際上對set/p 不行,我只能這麼猜測, 命令無非是設計出來的程式,一般命令如遇執行過程中需要接收鍵盤輸入,設計者都考慮了可以接收管道傳入值代替,而這個set/p卻並沒有考慮它,以前dos的set命令並沒有/p功能,也許當初在"改造"它時疏忽,後來又覺得沒必要再去修改。總之實際不行是硬道理, 沒必要去追究為什麼。

5 我想很多人會有這種看法,要是可以把某命令的結果有個命令直接賦給變數就好了,遺憾的是沒有,好在有個for命令,經擴充套件功能後,確實「強大」得很,其中加/f 的可以把命令結果、檔案內容或多行的字串,逐行按需要擷取後直接進行處理或再利用set命令賦給某變數備用,提到它並不是說多了一種賦值方法,而是很多時候是在這個命令裡(還是利用set)賦值的。

3樓:網友

echo abcd|set /p a=

這樣有點多次一舉,下面這句能實現你的想法。

set a=abcd

dos批處理檔案中變數運算(set /a)的問題

4樓:網友

1、set/a "a=%1%%2"

2、當%1為0時,%2只能是0~8,若不是將出錯。。當%1和%2都是字母或者%1為字母時,a都為0。。所以不要用set/a用set

3、不存在%1%這樣的變數,無意義。。若變數名不以數字開頭且只含乙個字元,請參考情況2。。。

5樓:網友

你之所以糾結,是因為你自身寫法有問題。

1.形參%1除以2取餘數 (傳遞了引數1,但沒有傳遞引數2時,實現)2.形參%1後跟形參%2 (傳遞引數,set a=%1%2,實現)

3.環境變數%1%後跟數字2 (不傳遞引數,給變數1賦值,set a=%1%2,實現)

批處理本身的語法就很混亂,你再在寫法上模凌兩可。

dos 批處理 將乙個以空格為分隔符的字串中特定格式的字串取出並賦值給變數

6樓:網友

應該把完整需求說出來的,不然就此寫的你未必會進一步改要寫到批處理中:

echo off

set str=6s7ew89 李四 56ee789set/a n=0

for %%i in (%str%)do echo;%%i>temdel tem

rem 已把含數字部分儲存到陣列變數s1-sn 了,例如可以用下面**顯示,其實這個步驟沒必要,只需在上一步的for裡的%%j 就是需要的變數,該作什麼從那就可以做了:

setlocal enabledelayedexpansionif %n% gtr 0 for /l %%i in (1,1,%n%)do echo !s%%i!

pause

bat 執行 結果賦值給

7樓:網友

比如執行echo %time% 得到的顯示時間為 即18點57分44秒10毫秒;

time:~0,2% 是提取%time%中的前兩個字元,即小時值;

time:~3,2% 是從%time%中的第三個字元後開始提取兩個字元,即分鐘值;

time:~6,2% 是從%time%中的第六個字元後開始提取兩個字元,即秒數值;

字元提取問題可以檢視set/?命令;

舉個例子吧!

set str=mynameisluhonglein

echo %str:~2,4% //提取str中第二個字元後的四個字元,即顯示 name

echo %str:~-10% //顯示str中最後十個字元,即 luhonglein

echo %str:~2,-10% //從第二個字元後開始提取,但去除最後的十個字元,將顯示 nameis

dos批處理變數內容替換的問題

8樓:網友

兩個問題都沒有簡單命令可解決,只能是適當「程式設計」。

第1個,確實變數的取捨替換裡,查詢時是不分大小寫的。如果能確定要替換的字串不是大寫的和小寫的都同時存在,那麼可以先用find或findstr查詢一下,比如只換小寫的。

echo %a%|find "good">nul&&set b=%a:good=best%

如果不能確定,那就比較麻煩了,但用批處理總還是可以解決的,如果你想不到解決辦法可再hi我。

第2個 稍有轉折,不難解決:比如整串你能取得後半串,那麼要前半串,從整串裡去掉後半串就得到前半串了,這裡面只是有乙個問題,就是變數裡想去掉另一變數代表的部分,如果寫成類似:

set c=%a:%b%=% 是不行的,要麼先設定變數延遲擴充套件setlocal enabledelayedexpansion

然後外側的%符換成! 即類似 set c=!a:%b%=!

還可以不設定變數延遲擴充套件,用時外側的%符寫成雙的再多加個call 類似:call set c=%%a:%b%=%%

9樓:漆海冬

a 命令列開關指定等號右邊的字串為被評估的數字表示式。該表示式。

評估器很簡單並以遞減的優先權順序支援下列操作:

分組。 一元運算子。

算數運算子。

算數運算子。

邏輯移位。按位「與」 按位「異」

按位「或」 /= %= += -= - 賦值。

表示式分隔符。

如果您使用任何邏輯或取餘操作符, 您需要將表示式字串用。

引號擴起來。在表示式中的任何非數字字串鍵作為環境變數。

名稱,這些環境變數名稱的值已在使用前轉換成數字。如果指定。

了乙個環境變數名稱,但未在當前環境中定義,那麼值將被定為。

零。這使您可以使用環境變數值做計算而不用鍵入那些 % 符號。

來得到它們的值。如果 set /a 在命令指令碼外的命令列執行的,那麼它顯示該表示式的最後值。該分配的操作符在分配的操作符。

左邊需要乙個環境變數名稱。除十六進位有 0x 字首, 八進位。

有 0 字首的,數字值為十進位數字。因此, 0x12 與 18 和 022

相同。請注意八進位公式可能很容易搞混: 08 和 09 是無效的數字,因為 8 和 9 不是有效的八進位位數。

p 命令列開關允許將變數數值設成使用者輸入的一行輸入。讀取輸入。

行之前,顯示指定的 可以是空的。

環境變數替換已如下增強:

path:str1=str2%

會擴充套件 path 環境變數,用 "str2" 代替擴充套件結果中的每個 "str1"。

要有效地從擴充套件結果中刪除所有的 "str1","str2" 可以是空的。

str1" 可以以星號打頭;在這種情況下,"str1" 會從擴充套件結果的。

開始到 str1 剩餘部分第一次出現的地方,都一直保持相配。

也可以為副檔名指定子字串。

path:~10,5%

會擴充套件 path 環境變數,然後只使用在擴充套件結果中從第 11 個(偏。

移量 10)字元開始的五個字元。如果沒有指定長度,則採用預設。

值,即變數數值的餘數。如果兩個數字(偏移量和長度)都是負數,使用的數字則是環境變數數值長度加上指定的偏移量或長度。

path:~-10%

會提取 path 變數的最後十個字元。

path:~0,-2%

會提取 path 變數的所有字元,除了最後兩個。

終於新增了延遲環境變數擴充的支援。該支援總是按預設值被。

停用,但也可以通過 的 /v 命令列開關而被啟用/停用。

10樓:網友

1. set進行字串擷取是不分大小寫的。2樓的方法正解。

echo %a%|find "good">nul&&set b=%a:good=best%

2. set進行字串擷取同樣也不支援正則。可以用批處理變通處理。

set b=%a:good=☆%

for /f "tokens=1* delims=☆「 i in ('echo %a%') do set b=%%j

set b=%b:☆=good%

11樓:網友

命令列開關允許將變數數值設成使用者輸入的一行輸入。讀取輸入行之前,顯示指定的 可以是空的。 環境變數替換已如下增強: %path:str

批處理提取檔案修改時間賦值給變數

for a in do set aa ta set yyy copyaa 0,4 baiaa 5,2 aa 8,2 if not exist yyy md yyy set aa ta 最後的一個百du分zhi號是多餘的,去dao掉這個百分號就不會為空了 批處理獲取了檔案的修改時間,怎麼賦值給變數 e...

如何使得dos批處理命令echo不輸出回車

用set p 顯示的內容 批處理檔案中,如何才能實現不換行輸出?echo off echo 故障警告 故障開始 怎麼在批處理中加回車命令 這需要看到批處理的源 通常是去掉 中的pause命令 如果確實是某些命令需要按回車 一般都會有不需要按回車的靜默選項 對於個別需要回車確認的特別命令 可以考慮在這...

請教DOS批處理問題,如何條件選擇性的執行命令

echo off title.color 0a clsecho echo 我想做一個選擇性的執行命令的批處理echo echo 命令1 ipcomfig echo 命令2 ping 127.0.0.1echo set a set p a 選擇命令1或2 按回車確定 if a 1 ipconfigif...