顯示具有 Batch 標籤的文章。 顯示所有文章
顯示具有 Batch 標籤的文章。 顯示所有文章

2013年10月21日 星期一

[Batch] call的用法,call與goto的差別

call可用在執行其他batch檔
也可以執行寫好的function(在batch稱為label)

Ex1:
ECHO CALL example1
CALL test1.bat

Ex2:
ECHO CALL example2
CALL :test2

:test2
ECHO This is test2


goto也可以執行寫好的function
但call與goto兩者最大差別為
call跳到label後,執行完label中的程式碼,會跳回call之後的程式碼
但goto跳到label後,並不會跳回來

此外
call後面可接傳入function的參數

Ex3:
ECHO CALL example3
CALL :test3 100

:test3
ECHO This is test3
ECHO %1%



refs: http://ccd9527.blogspot.tw/2010/11/bat-call-06.html

2013年6月5日 星期三

[Batch] 取得指令的結果

setlocal enabledelayedexpansion 變量延遲

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

adb.exe kill-server
adb.exe start-server

for /F %%i IN ('adb.exe shell getprop persist.sys.language') do (
SET language=%%i
)
echo !language!

2013年5月14日 星期二

[Batch] if exist路徑寫法;解決if else皆跑到的bug

IF EXIST的語法如下
IF EXIST "[PATH]" (
  echo a
) ELSE (
  echo b
)

A. PATH為已知路徑
 ex: C:\demo

1. 在xp更舊版本(實際版本不詳),必須在path前後,加雙引號
 ex: IF EXIST "C:\demo"
2. 在xp之後,在path前後可不加雙引號
 ex: IF EXIST C:\demo
3. 但路徑若有空白,則必須加雙引號




B. PATH為變數+字串的路徑
 ex: set apk_path="C:\demo"
  %apk_path%child_path

1. 在win7 sp1(6.1.7601)版本之後,可直接使用%變數%字串
 ex: IF EXIST %apk_path%child_path
2. 在win7(6.1.7600)版本及更舊,必須使用"%變數%字串"
 ex: IF EXIST "%apk_path%child_path"