bat執行結果賦值給,批處理 命令執行結果賦值與比較

時間 2022-01-01 18:03:02

1樓:匿名使用者

比如執行echo %time% 得到的顯示時間為 18:57:44.10 即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

2樓:我還是託

有&pause ||echo 沒有&pause

3樓:匿名使用者

副檔名為bat的檔案稱為批處理檔案。

批處理檔案是副檔名為·bat 或·cmd的文字檔案,包含一條或多條命令,由dos或windows系統內嵌的命令直譯器來解釋執行。

批處理檔案是無格式的文字檔案。在命令提示下鍵入批處理檔案的名稱,或者雙擊該批處理檔案,系統就會呼叫cmd.exe按照該檔案中各個命令出現的順序來逐個執行它們。

使用批處理檔案(也被稱為批處理程式或指令碼),可以簡化日常或重複性任務。

批處理,也稱為批處理指令碼,英文譯為batch,批處理檔案字尾bat就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視為一個命令,每個命令裡可以含多條子命令,從第一行開始執行,直到最後一行結束,它執行的平臺是dos。

批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。

bat指令碼如何將命令執行的結果賦值給變數

4樓:匿名使用者

這個問題也曾困擾我很久,後來發現只有兩條路可走

一是通過臨時檔案做中轉, 用這種方式賦值 set /p 變數=《臨時檔案

還有一種方式就是通過強大的for 命令,在 do 語句中來 set

批處理 命令執行結果賦值與比較

5樓:匿名使用者

@echo off

for /f "delims=" %%a in ('ipconfig ^| findstr /n ".*"') do set "var=%%a"

for /f "delims=:" %%b in ("%var%") do set "str=%%b"

if "%str% geq 100 (echo warning) else echo ok

pause

怎麼用bat得到一個命令執行後的返回值賦值給一個變數

6樓:刺友互

1、在電腦的桌面,右鍵新建一個.txt檔案,將其文字開啟。

2、在文字中輸入我們需要執行的命令。

3、在文字中輸入我們需要執行的命令。

4、最後輸入暫停按鈕*****  pause; 然後將其文字儲存,關閉。

5、選擇中文字,右鍵重新命名為  .bat檔案。

6、重新命名完成之後,會彈出一個更改檔案字尾名的視窗,點選【確定】按鈕。

7、雙擊執行剛剛編寫.bat檔案,檢視輸出內容,滑動滾動條上下移動。

7樓:兩隻路邊的螞蟻

返回值賦值確實麻煩,因為有很多特殊字元。

不過,你這個例子,倒是有解。

請試試命令

echo %path%

或者set "a=%path%"

echo %a%

pause

8樓:匿名使用者

@echo off

for /f "skip=1 tokens=* delims=" %%a in ('wmic environment where "name='path'and username=''" get variablevalue') do (

set a=%%i)

pause

9樓:匿名使用者

我是將返回值寫入到檔案,利用for迴圈讀出來再賦值給變數a,迂迴了下@echo off

wmic diskdrive list brief |findstr virtual|find /v /c "">%temp%\vitual.txt

for /f %%i in (%temp%\vitual.txt) do set a=%%i

echo vm disk num is:%a%if %a% equ 0 (echo "physical machine") else (echo "virtual machine")

pause

在.bat指令碼中如何將一個命令的返回結果傳給一個變數?

10樓:刺友互

1、首先用記事本新建一個資料夾。

2、然後在記事本里輸入ipconfig /release和ipconfig /renew命令。

3、將文字另存為.bat為字尾的檔案。

5、這時我們電腦就會將一個命令的返回結果傳給一個變數。

注意事項:批處理檔案的副檔名為bat 或cmd。目前比較常見的批處理包含兩類:

dos批處理和ps批處理。應用於dos和windows系統中。

11樓:海天盛

1.首先用記事本建立一個新資料夾。

2.然後在記事本中輸入ipconfig/release和ipconfig/renew命令。

3.將文字儲存為帶有bat字尾的檔案。

5.此時,我們的計算機將把一個命令的結果返回給一個變數。

12樓:匿名使用者

延遲變數全稱"延遲環境變數擴充套件",要理解這個東西,我們還得先理解一下什麼叫擴充套件!

cmd在解釋我們的命令的時候,首先會讀取命令列一條完整的命令,然後對其進行一些命令格式的匹配操作,看你所輸入的命令格式是不是符合他的要求.

如果我們要在我們的命令中引用一些變數,那麼我們如何讓cmd在解釋我們的命令時,能識別出這個變數呢?這時我們就可以在變數名字兩邊加一個%號,如%name%.當cmd在對讀取我們的整行

命令進行格式匹配的時候,就會發現name這個字元兩邊加了%號,就不會把他當作普通字元處理,

而是會把他當作一個變數處理,變數名叫name!然後cmd就會找到變數名對應的值,用變數名的值替換掉這個變數名字(name),(如果變數名不存在值,就返回空值).再將這個替換好並且匹配的命令執行!

這個替換值的過程,就叫做變數擴充套件,說白了就是把變數的名字,用他的值給替換掉後執行!也就是批處理如何識別一個變數的過程.

(注意:這裡只是變數的擴充套件的意思,不是延遲環境變數擴充套件,要理解延遲環境變數擴充套件,必須先理解什麼是變數的擴充套件) 也就是批處理如何識別一個變數的過程. ~_~

例如這個一個bat

set var=test

echo %var%

cmd在讀取到echo %var%這句命令後,就會進行匹配操作,它馬上就發現var字元兩邊有%號,這時他就會把他當作一個變數處理,檢視這個var變數名是不是有值,如果有就用他的值把變數名var給替換掉,這裡我們的var在上一條命令set var=test中,給var賦值為test,所以他會用test把%var%這個變數名替換掉,替換後的結果就為echo test了.這些步驟都是cmd進行匹配操作的步驟,匹配完後,他再執行echo test這條語句,這時我們的cmd中就會echo出一個test了.

什麼是環境變數擴充套件知道了,那什麼是延遲環境變數擴充套件呢?

在理解環境變數擴充套件時,我們知道cmd在解釋命令時,首先會把一條完整的命令進行讀取,然後進行匹配操作,匹配時他會把命令裡的變數用變數的值個替換掉,然後執行這個替換好的命令.

問題就出在"一條完整的命令",在bat中,if for這樣的命令都可以加括號,將一些命令巢狀在裡面執行.這樣的話對於一條可以加擴號嵌其他命令的命令,他的完整格式就是

for %%i in (....)這樣一個整體.此時,如果我們如果在括號裡面嵌入一些設定變數值的命令,就會出現問題了!

看例子@echo off

for /l %%i in (1,1,5) do (

set var=%%i

echo %var%

)執行後會顯示5個空行的錯誤提示!為什麼?根據我們上面說的知識來理解

@echo off

set var=test

for /l %%i in (1,1,5) do (

set var=%%i

echo %var%

)這個就會列印5個test了.

通過這兩個例子,大家因該已經理解,如果只有環境變數擴充套件這個過程的話,如果我們在可以巢狀命令的命令中執行賦值操作時,會讓我們的bat出現給變數賦值的問題.

那麼這個時候"延遲環境變數擴充套件",這個概念就被提出來了

在批處理中,我們可以用setloacl enabledelayedexpansion這個命令來啟用"延遲環境變數擴充套件"

在我們啟用了"延遲環境變數擴充套件"後,當cmd在解釋涵有巢狀格式的命令時,他會把巢狀的命令一條一條的先執行一次,然後再進行匹配操作,這樣我們的賦值操作就會完成.並且再"延遲環境變數擴充套件"啟用後,cmd會用!號來判斷這是不是一個變數,如沒啟用來變數用%name%這樣的格式判斷,啟用後就用!

name!這樣的格式判斷了,這個符號我們需要注意!

例子:@echo off

setlocal enabledelayedexpansion

set var=test

for /l %%i in (1,1,5) do (

set var=%%i

echo !var!

)這樣大家因該明白什麼是延遲環境變數擴充套件了吧.

再來一個例子

@echo off

set var=test & echo %test%

pause

這條命令放在一行,表示他是一條完整的命令,不啟用"延遲環境變數擴充套件",就會出現上面的賦值錯誤!

改成這樣

@echo off

setlocal enabledelayedexpansion

set var=test & echo !var!

pause

很容易理解了吧!

13樓:腦動力tv頻道

模板:cmd1 > tmp.dat

set /p var=結合問題後:

netstat -a|findstr 50000 > tmp.dat

set /p a=最後不需要tmp.dat加上:del tmp.dat

怎麼把cmd命令變成bat批處理

將要在diskpart輸入的指令儲存為文字檔案命名為。select disk 0 select partition 2 active 然後在同一資料夾建立bat檔案,內容如下。diskpart s 複製,貼上,加echo,改標題,改字尾,完成。直接把那些指令寫到新文字中,最後儲存為bat字尾格式的檔...

批處理修改檔名命令哪裡錯了,用bat命令如何修改檔名?

不清楚你的實際檔案 情況,僅以問題中的樣例 說明為據複製貼上到記事本,另存為xx.bat,編碼選ansi,跟要處理的檔案放一起執行 echo off rem 將檔名末尾新增指定字串字尾 用bat命令如何修改檔名?1 找到需要批量修改的檔案,把它們放在一個同資料夾裡 2 在空白處右擊滑鼠,在介面中點選...

我在cmd執行這些命令怎麼寫成批處理檔案?

但是看你 好像有問題。是不是少了幾條命令,還是第二條命令應該放在第一個。我就不改了,你自己看吧。複雜點就。echo cd f s f copy b tdl 切換碟符的cd命令要加引數 d echo off cd d f s 1 copy b tdl 在命令提示符 cmd 依次執行如下命令,怎樣寫相應...