2009-11-23 34 views
1

在下面的語句:如何在傳遞給system()時克服路徑中的空間?

system("%TESTCASES_PATH%SIP\\test.bat"); 

的%TESTCASES_PATH%得到解決,以 「C:\ Program Files文件...」。

作爲調用系統的這樣的結果是:

「‘C:\程序’不被識別爲內部或外部的命令..」

「C:\程序」被認爲是一個可執行文件。

如何解決上述問題?

編輯:試着在答案中提出什麼,我看到了同樣的行爲。下面是實際的代碼:

#include <stdio.h> 
#include<conio.h> 

int main() 
{ 
    system("\"%TESTCASES_PATH%SIP\\Provisioning\\CrHomeDnOfficeCodeDestCodeBySoap\\CreateHomeDnOfficeCode.bat\""); 
    //system("\"%TESTCASES_PATH%SIP\\tests.bat\""); 
    getch(); 

    return 0; 
} 

回答

8

使用雙引號來傳遞整個路徑作爲可執行文件/批處理文件:

system("\"%TESTCASES_PATH%SIP\\test.bat\""); 

否則,什麼是後一個空間,成爲第一個命令行參數。

編輯:也許在你的設置上,%TESTCASES_PATH%沒有被system()函數擴展。在大多數系統中,可以檢索一個環境變量與getenv()值:

char cmd[FILENAME_MAX]; 
snprintf(cmd, FILENAME_MAX, "\"%s\\test.bat\"", 
    getenv("TESTCASES_PATH")); 
system(cmd); 
+0

Andomar, 我仍然看到相同的問題。 – 2009-11-23 14:41:32

+0

@Prabhu。 S:也許你必須自己擴展環境變量(回答編輯) – Andomar 2009-11-23 14:52:24

+0

@Andomar,你是對的。這就是訣竅! – 2009-11-24 01:33:05

3

什麼:

system("\"%TESTCASES_PATH%SIP\\test.bat\""); 

字符串中的額外的雙引號放行文件名以白色空間到系統調用。

1

對這兩種解決方案都有一個警告:用一個不包含空格的字符串對它們進行測試。

它可能在某些Windows Shell上失敗。

相關問題