2013-02-13 56 views
2

我正在接受作爲我的腳本之一的命令行參數的目錄路徑。有兩件事我想做。首先是我想確認路徑在目錄中傳遞。我想做的第二件事是追加到子目錄名稱的路徑(我知道提前的子目錄名稱)。如果庫中有任何功能會自動爲路徑添加尾部/字符(如果它缺失),還是必須手動檢查該字符?什麼是追加到路徑的正確方法?

例如,如果/User/local通過,那麼我必須補充/bin的路徑,而如果路徑/User/local/傳遞我必須補充bin

感謝您的幫助。

+5

文件系統應該將Afaik'/ User/local/bin'處理成等於'/ User/local // bin'。 – Bergi 2013-02-13 00:15:37

+0

@Bergi哇,這真的很有趣。謝謝。 – Max 2013-02-13 00:18:34

+0

好的,因爲我在評論中看到4個upvotes,它似乎是真的:-) – Bergi 2013-02-13 00:23:07

回答

3

好像你只是想path.joinfs.existsSync,並fs.statSync

var path = require('path'); 
var fs = require('fs'); 

var dir = process.argv[2]; 

console.log(dir); 
console.log(fs.existsSync(dir) && fs.statSync(dir).isDirectory()); 
console.log(path.join(dir, 'mysubdir')); 

所以,如果我運行上面,如:node test.js /tmp我會得到:

/tmp 
true 
/tmp/mysubdir 
+0

謝謝。這正是我所期待的。 – Max 2013-02-13 02:12:27

0
var tail = 'bin/test/', 
    path = arg[arg.length-1] === '/' ? arg + tail : arg + '/' + tail; 

或者我錯過了什麼? :)

+0

我必須追加到許多不同地方的很多路徑,所以我希望避免輸入數百次。這樣做似乎是要求隱藏錯字錯誤。正如Bergi指出的那樣,你甚至不需要擔心'/'。 – Max 2013-02-13 00:20:38

+0

我不明白這個問題。你可以根據我寫的代碼編寫一個函數 - 這很簡單。爲什麼你需要圖書館? – Microfed 2013-02-13 00:26:14

0

你可以把邏輯成一個短的函數,確保兩個部分之間只有一個「/」:

function appendToPath(orig, add) { 
    return orig.replace(/\/$/, "") + "/" + add.replace(/^\//, ""); 
} 

var newPath = appendToPath("/User/local", "bin"); 

var newPath = appendToPath("/User/local/", "/bin"); 

var newPath = appendToPath("/User/local", "/bin"); 

他們都返回"/User/local/bin"

相關問題