因为Office升级, 需要对所有的脚本内容, 做如下字符串替换.
替换前
"C:\Program Files (x86)\Microsoft Lync\communicator.exe"
替换后
"C:\Program Files (x86)\Microsoft Office\Office15\lync.exe"
"C:\Program Files (x86)\Microsoft Lync\communicator.exe"
替换后
"C:\Program Files (x86)\Microsoft Office\Office15\lync.exe"
试了试下面的shell命令, 有些文件可以进行替换, 但是有些文件sed就是说找不到.
http://offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.html
http://www.linuxask.com/questions/how-to-adjust-the-argument-position-in-xargs
grep -rl communicator . | xargs -0 sed -i 's/C:\\Program Files (x86)\\Microsoft Lync\\communicator.exe/C:\\Program Files (x86)\\Microsoft Office\\Office15\\lync.exe/g'
试了试, 未果, 于是切换到下面的ruby脚本. 还是这样更快些, 对我而言.
require "fileutils"
require "pathname"
target_dir = 'C:/MyProgram/Launchy/Utilities/ShortCuts/Lync'
Dir.glob("#{target_dir}/**/*bat") do |filename|
next if filename == '.' or filename == '..'
next if File.directory? filename
puts filename
text = File.read(filename)
new_contents = text
target_str = "C:\\Program Files (x86)\\Microsoft Office\\Office15\\lync.exe"
new_contents = new_contents.gsub(/C:\\Program Files \(x86\)\\Microsoft Lync\\communicator.exe/, target_str)
new_contents = new_contents.gsub(/C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Microsoft Lync\\Microsoft Lync 2010.lnk/, target_str)
new_contents = new_contents.gsub(/C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Microsoft Office 2013\\Lync 2013.lnk/, target_str)
# code for update from lync 15 (2013) to scyper
new_contents = new_contents.gsub(/C:\\Program Files \(x86\)\\Microsoft Office\\Office15\\lync.exe/, target_str)
# To merely print the contents of the file, use:
puts new_contents
# To write changes to the file, use:
File.open(filename, "w") {|file| file.puts new_contents }
end
----
[The End]