2011-12-23 187 views
3

我想製作一個簡單的(或至少我以爲)批處理文件來查找特定文件類型的文件,然後創建使用特定程序打開它們的快捷方式。創建批處理和快捷方式的快捷方式

經過大量的挖掘,我發現這是最好的與VBScript完成,所以我創建了一個小腳本來爲我做快捷方式。這不起作用,所以我希望有人能告訴我爲什麼。謝謝。

MakeShortcuts.bat:

SET ShortcutPath=c:\shortcuts\ 
SET ProgramPath="c:\windows\notepad.exe" 
SET SearchBaseDir="C:\Documents and Settings\" 

FOR /R %SearchBaseDir% %%i IN (*.gba) DO (
createShortcut "%ShortcutPath%Open %%~ni.lnk" "%ProgramPath%" "%%i" 
) 

createShortcut.vbs:

set obShell = CreateObject("WScript.Shell") 
sShortcut = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(0)) 
sTargetPath = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(1)) 
sArgument = obShell.ExpandEnvironmentStrings(WScript.Arguments.Item(2)) 
set shortcut = obShell.CreateShortcut(sShortcut) 
shortcut.TargetPath = sTargetPath 
shortcut.Arguments = sArgument 
shortcut.Save 

好了,當我跑MakeShortcuts.bat它給我的消息[系統找不到指定的驅動器。]在命令行中。

它會按照預期創建快捷方式,但目標在參數周圍沒有任何引號可以防止快捷方式正常工作。我認爲這也可能與上述錯誤消息有關。

我對VBScript非常陌生,所以我可能會錯過一些非常愚蠢的東西。請幫忙。

謝謝。

回答

1

我懷疑問題出在VBScript中,它可能是在批處理文件中。您分配給SearchBaseDir值應雙引號括起來,就像這樣:

SET SearchBaseDir="C:\Documents and Settings\" 

然後,你需要從你傳遞給createShortcut參數刪除引號。

您還需要決定是否要使用%% i或%% f,因爲兩者使用不一致。將%% i重命名爲%% f,或將%% f重命名爲%% i。

最後,我對此沒有絕對的把握,但最後%% f可能不得不用%%〜f來代替,以便擺脫雙引號,如果有的話它的值包含雙引號。

+0

感謝您指出%% f和%%我的問題,我重寫了代碼以刪除程序的細節,但複製和粘貼原始位。我編輯了上面的例子,但沒有在原來的相同的錯誤。你是什​​麼意思使用[%%〜我]會做什麼?我做了其他改變,但仍然有相同的結果。儘管感謝您的回覆。 – user1113827 2011-12-23 20:04:57

+0

%%〜如果值已被雙引號包圍,我將從%%的值中刪除雙引號。無論如何,我的建議是首先用echo命令替換createShortcut命令,並確保您的批處理文件完美工作,然後再繼續在VBScript中查找問題。 – 2011-12-23 20:55:10