調用bat時,傳遞參數有個小問題,記錄一下。
1.問題描述:
傳遞參數時,接收的值不對。傳遞了“1,2,3”,接收時,只剩下1。后面的沒有了。
解決:
原因是bat取參時,語法弄錯了。
Syntax 1:
%0 代表bat文件名
%1 代表第一個參數
%2 代表第二個參數
%2 代表第二個參數
example 1:
> type args_handle.bat
@echo arg1 : %1
@echo arg2 : %2
> args_handle.bat "aaa=bbb,ccc" "ddd;eee"
arg1 : "aaa=bbb,ccc"
arg2 : "ddd;eee"
--------------------------------------------------------------------------------------------------------------
Syntax 2:
%~1 第一個參數,除去雙引號
%~2 第二個參數,除去雙引號
example 2:
> type args_handle.bat
@echo arg1 : %~1
@echo arg2 : %~2
> args_handle.bat "aaa=bbb,ccc" "ddd=eee"
arg1 : aaa=bbb,ccc
arg2 : ddd=eee
--------------------------------------------------------------------------------------------------------------
Syntax 3:
%* 代表所有參數
2.問題描述:
昨天調試程序時,又有新的bug。數據庫SQL Server中trigger傳遞200個參數給bat,trigger方面打log確認,確實傳遞了200個參數(參數格式 1,2,3,4,5,6...),但是bat方法接收時,打log確認,卻只接收到第87個characoter,后面的全被cut掉了,不知道原因。
解決:
方法調查中→解決完畢
追記:
場景描述:
trigger中,將200個參數作為一個字符串傳遞個bat。
問題原因:字符串的聲明錯誤。作為參數傳遞的變量,被人寫成了sysname,而不是用varchar 聲明的。systemname是個SqlServer內置的數據類型,長度為128個字符。
參考資料:
http://capm-network.com/?tag=Windows%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BC%95%E6%95%B0
