請教: 有沒有可以批次搜尋所有的 .lnk 檔並直接替換路徑設定的小工具程式

小弟最近因為公司file server移到新機上,故server name跟舊機不同。但可惱的是,大多數使用者的桌面上一堆捷徑(.lnk),很多都是直接指向舊伺服器。若要一個個更改,真的是幾隻手臂也不夠斷。

各位先進是否有遇到類似這樣的情況,有沒有這樣的工具程式可以直接將路徑進行更改?

懇求大家的幫忙!!謝謝!!
神鵰俠 wrote:
小弟最近因為公司fi...(恕刪)

server name 可以改名吧
改一樣就好了

舊server改別的名字
A Pink, Hello Venus

tim901 wrote:
server nam...(恕刪)


謝謝您的意見,但就是有一個原因,不想改原來舊機的電腦名稱。故新的file server必須用新的電腦名稱。

so....anyone else?
看錯, 自刪...
1515151515
如果每個使用者的路徑沒辦法一個一個改,在舊server分享的目錄下,把原本檔案移到新server,
只放一個目錄連結,讓使用者自已點連結,連到新sever上。之後讓使用都自已慢慢移轉到新機。
一對夫妻到動物園,看到了大狒狒時,妻:真奇怪,愈難看的動物愈多人看。夫:不要叫這麼大聲,大家都在看妳
如果lnk裡面寫的是網址...
那就很簡單用DNS 去動手腳就好了...

若是單純的hostname...恩...
那就真的得找其他方式去搞了 ..


wyldkao
感謝大家不吝賜教!!

基本上這樣的問題,我相信一定有IT人員會遇到。只是大部分的IT人員,不是咬咬牙,悶著頭去一個個改,不然就是要使用者自己重新抓捷徑。

當然還有一些透擴AD網管的方法限制及同步化使用者桌面捷徑的管理方式,不過這已是事後諸葛了,無濟於當前的問題;況且若是使用者非得自建LNK於桌面,你也拿他們沒皮條。

所以....在下也就咬咬牙,去把LNK檔案DUMP出來研究一下,然後用VFP的低階檔案I/O函數指令直接先處理了。不過目前也只支援到同長度的HOSTNAME,而且不可以是隱藏路徑,還有網芳裡的捷徑也還不行,可能還得再研究研究。

不過至少比一個個改,60部電腦得花將近一整天的時間處理來說,這個REPATH程式還真是讓我覺得效果真的不錯,連圖示位置都可以修正呢!只要透過E-MAIL或SKYPE告訴使用者去執行這個程式,短短的30秒不到的執行時間,就全部解決了。(但可花了我兩天去編寫及DEBUG)

若看得懂VFP且您也需要這支程式的話,可以告訴我。我會找個地方放上去讓大家下載,順便再請大家提供一下意見。^^"
神鵰俠 wrote:
。(但可花了我兩天去編寫及DEBUG)

反而比一個一個改時間花的還多
這常常是電腦人員的迷思
為了找到更完美更漂亮的方法
反而花更多的時間,或是時程延宕
如果一開始就用最笨的方法可能早就完成了

我寫程式也常有這種情況
明明程式寫到某地方,其實也沒有瓶頸,能繼續寫下去
但就發現如果繼續寫下去,用的方法很笨,程式碼較多不簡潔
苦思好幾天,想更漂亮的做法,結果反而花的時間更久
A Pink, Hello Venus

tim901 wrote:
反而比一個一個改時間...(恕刪)


是呀!!雖然花的時間是比一個個改來得長,但卻不會聽到抱怨 "甚麼時候可以恢復正常呀?" "甚麼時候輪到我們呀?" "可不可以先改我的?現場很忙!!" 諸如此類....

我當然可以只要花一時間處理完這件事,但以老闆的角度來看,這樣的處理方式不漂亮。若抱怨的聲音傳到老闆耳中,我可是會被叫進去唸一頓。(之前已有先例了)

也好!!花點時間自己寫工具,以後應該還是有用的到的一天
'---以VB 6 , 請引用項目 Windows Script Host Object Model

Dim A(100)
Dim B(100)

Private Sub Form_Load()
A(0) = "\\OldServer\舊路徑1"
B(0) = "\\NewServer\新路徑"

A(1) = "\\OldServer\舊路徑2"
B(1) = "\\NewServer\新路徑2"


'---取得桌面所有LNK,請自行DIY
DeskPath = WSH.SpecialFolders("Desktop")
InkName = Dir(DeskPath & "\*.lnk")
Debug.Print InkName
While Len(InkName)
Debug.Print InkName
InkName = Dir
'Call ChangeLink(InkName)
Wend
'---------------------------------------



End Form






Sub ChangeLnk(fileName)
Dim WSH As WshShell
Dim Urllink As WshShortcut
Set WSH = New WshShell


Set Urllink = WSH.CreateShortcut(fileName)

TextTargetPath.Text = Urllink.TargetPath
TextWorkingPath = Urllink.WorkingDirectory


Debug.Print Urllink.TargetPath
Debug.Print Urllink.WorkingDirectory

ChangeFlag = False

For i = 0 To UBound(A)
If A(i) <> "" Then
If InStr(UCase(Urllink.TargetPath), UCase(A(i))) <> 0 Then
Urllink.TargetPath = Replace(Urllink.TargetPath, Left(Urllink.TargetPath, Len(A(i))), B(i))
ChangeFlag = True
End If
If InStr(Urllink.WorkingDirectory, A(i)) <> 0 Then

Urllink.WorkingDirectory = Replace(Urllink.WorkingDirectory, Left(Urllink.WorkingDirectory, Len(A(i))), B(i))
ChangeFlag = True
End If
End If
Next



If ChangeFlag = True Then
Urllink.Save
MsgBox "更改成功" & Chr(13) & Urllink.TargetPath & Chr(13) & Urllink.WorkingDirectory
End If


Set Urllink = Nothing
Set WSH = Nothing

End Sub
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!