2011-06-14 29 views
1

我問how to check modify timestamps with BAT files and launch a command based on an if statement和Wimmel問我是否可以使用VBScript而不是批處理文件。我認爲這是一個偉大的想法。這導致了另一個問題Windows XP和以上:JavaScript而不是VBScript?

我是否可以通過JavaScript訪問VBScript功能,同時仍然兼容Windows XP到Current? (具體檢查文件修改時間戳和運行命令取決於最近修改)

+0

看看[HTA(HTTP:/ /msdn.microsoft.com/en-us/library/ms536496%28v=vs.85%29.aspx)可以用vb或javascript編寫。不知道你通過javascript訪問vbscript意味着什麼 – mplungjan 2011-06-14 19:35:44

回答

1

不確定這是一個好主意,但是,可以使用JavaScript(實際上是JScript)而不是VBScript。只需使用ActiveXObject類而不是VBScript中用於創建對象的CreateObject函數。

這裏是讀取使用Windows腳本和JScript文件修改時間戳的代碼:

var o = new ActiveXObject("Scripting.FileSystemObject"); 
var file = o.GetFile("c:\\temp\\test.js"); 
WScript.Echo(file.DateLastModified); 

欲瞭解更多信息,請參閱JScript documentationWindows Script Host documentation

+0

爲什麼它不是一個好主意? – 2011-06-14 19:50:49

+0

我可能不應該發佈這個評論......我沒有任何真正的理由不在Windows腳本中使用JScript。 ActiveX對象對於VBScript來說更「原生」,所以我會選擇VB來處理像這樣的任務,但它非常主觀。 – 2011-06-14 20:19:53

1

即使有可能更容易的方式來實現你想要做的,我試着去嘗試更多的理論部分,顯然我們需要的是所有的東西。

這裏是我的嘗試:

test.js:

WshShell = WScript.CreateObject("WScript.Shell"); 
var result = WshShell.Run("test.vbs", 0, true); 
WSH.Echo(result); 

test.vbs:

WSH.Echo "test.vbs" 
WSH.Quit 5 
+0

這不是我的意思。我並不是說,用JScript執行VBScript。我的意思是使用JScript訪問等效功能。 – 2011-06-14 19:54:57

+0

好的,不知道你在找什麼。我猜所有的語言都有能力解決所有的邏輯問題,所以在VBScript中可以解決的問題也可以在JScript中解決。只是以一種稍微不同的方式。真正的區別可以在API中。但是JScript和VBScript通常使用'WScript.CreateObject'來爲這些應用程序使用ActiveX組件,並且生成的對象不受限於該語言。 – 2011-06-14 20:16:16

相關問題