2016-03-03 34 views
1

我有一個問題,在網上搜索1個小時後我還沒有找到解決方案!製作相對目標的相對快捷方式

情況: 我有一個目錄\DIR 在這個目錄中我有一個SCRIPT.lnk,我想針對\DIR\Dependences\SCRIPT.bat\DIR文件夾將移植(在USB密鑰或任何其他隨機目錄)。

你有解決方案讓他們親戚嗎? 我試過多種語法類型,但沒有任何作品。

+0

請分享您的嘗試(通過編輯您的帖子將其添加到問題中)!無論如何,我不認爲這是可能的'* .lnk'快捷方式; [標籤:批處理文件]也許不是創建此類鏈接的最佳選擇... – aschipfl

回答

1

一旦您意識到批處理文件不可執行,該解決方案很容易。它執行cmd.exe,然後解釋你的批處理腳本。考慮到這一點,您可以將您的快捷方式指向cmd.exe,以其絕對完全合格的路徑或其傳統環境變量%comspec%(或者如果您願意的話,則爲%windir%\system32\cmd.exe)。

而現在,因爲你的BAT文件不再是目標但現在是一個參數,你可以一整天做的是相對長。美是,如果快捷方式與包含批處理腳本的文件夾一起移動到不同的驅動器和不同的深度,它仍然可以工作。

<# : batch portion 
@echo off & setlocal 

set "shortcutname=script.lnk" 
set "shortcuttarget=DIR\Dependences\SCRIPT.bat" 

powershell -noprofile "iex (${%~f0} | out-string)" 
goto :EOF 

: end batch/begin PowerShell hybrid code #> 

$shortcut = (new-object -COM WScript.Shell).CreateShortcut($env:shortcutname) 
$shortcut.TargetPath = "%comspec%" 
$shortcut.Arguments = '/c "{0}"' -f $env:shortcuttarget 
$shortcut.Save() 

而且任何人都好奇,如何這可以應用到指向不是.BAT劇本以外的東西(如PDF文檔,例如)的快捷方式,只需更換與此$shortcut.Arguments行:

$shortcut.Arguments = '/c start "" "{0}"' -f $env:shortcuttarget 
+0

好的男人,謝謝,但是,我想知道我應該在哪裏寫下你給我的腳本? –

+0

哦,沒關係,我只是沒有理解,我只用這段代碼做了一個批處理,它使我成爲一個新的快捷方式。非常感謝你! –

+0

但我仍然有一個問題,這個作品完美,但如果我在我的蝙蝠快捷方式中打勾「運行管理員」,bat文件將不會啓動...任何解決方案? :) –