Linux

在Unix中獲取Windows中bat文件的返回值?

  • October 3, 2010

我有以下情況:-我bbb在 Windows 2003 中編寫了一個批處理文件並設置了一個返回值 = 3,exit /b 3 然後我通過這個命令從 Unix 執行這個批處理文件:-ssh -l admin host 'cmd /c start bbb'但是當我列印返回值時,我得到(0)而不是( 3)。我列印這個值echo $?。現在如何從 Windows 批處理中獲取返回值“退出程式碼”?

您不能同時使用 bash 和批處理的確切程式碼。

我的猜測是腳本遵循一個條件,例如:

if WINDOWS
 exit /b 3
else
 exit 3

這都是虛擬碼,我不確定這兩個系統都適用。

編輯: 或者您可以走更簡單的路線並編寫兩個完全不同的腳本文件; job.batjob.sh

我對此很感興趣,所以我做了一些研究。我認為使用該start命令會給您帶來問題 - start 會導致該命令在另一個 shell 中執行。當您exit /b 3將返回值傳遞給執行的 shellcmd /c時,當它退出時,您只會得到一個0返回值ssh,因此$?為 0。

我在 c:\temp\b.bat 中創建了一個簡單的批處理文件

@echo off
exit /b 3 

像這樣執行批處理文件

ssh -l admin host 'cmd /c c:/temp/b.bat'

返回 3 到 $? 按要求。

注意:在上面的命令中使用/代替。\

我的測試環境是 Windows Vista 上的 copssh 3.1.4,但我希望它在您的 2k3 環境中也能正常工作。

引用自:https://serverfault.com/questions/187056