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 依次執行如下命令,怎樣寫相應...