USBドライブに名前を割り当てましたが、文字ではなく名前に基づいてデスクトップショートカットでターゲットにする簡単な方法があるかどうか疑問に思いました。
したがって、F:\ program_to_run.exeの代わりに、次のように機能します:DRIVENAME:\ program_to_run.exe
上記は明らかに機能しませんが、ショートカットファイルまたは単純なバッチファイルのいずれかを使用して、同様のことを実行できますか?
USBドライブに名前を割り当てましたが、文字ではなく名前に基づいてデスクトップショートカットでターゲットにする簡単な方法があるかどうか疑問に思いました。
したがって、F:\ program_to_run.exeの代わりに、次のように機能します:DRIVENAME:\ program_to_run.exe
上記は明らかに機能しませんが、ショートカットファイルまたは単純なバッチファイルのいずれかを使用して、同様のことを実行できますか?
VB.Net を始めたばかりなので、これを行うコマンド ライン プログラムを作成してみませんか?
このコードを貼り付けます:
Module Module1
Sub Main()
Dim program = ""
Dim drive As String = ""
Try
'Get the commandLine, without thhis application name or the beginning space
Dim commandLine As String = Environment.CommandLine.Replace(System.Reflection.Assembly.GetExecutingAssembly().Location, "").Replace("""", "").Substring(1)
'Get the DriveNAme part of the commaneLine
Dim driveName As String = commandLine.Split(":"c)(0)
drive = GetDriveByName(driveName)
'Get the Program Name part of the commandLine
program = commandLine.Split(":"c)(1)
If drive.Length = 0 Then Throw New Exception("No drive was found with the name '" + driveName + "'")
Dim starter As New System.Diagnostics.ProcessStartInfo(drive + program)
starter.UseShellExecute = True
System.Diagnostics.Process.Start(starter)
Catch ex As Exception
Console.WriteLine("Failed starting " + drive + program + ". " + ex.Message)
End Try
End Sub
''' <summary>Returns the drive letter of the Fixed or Removable drive with the specified name</summary>
''' <param name="DriveName"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetDriveByName(ByVal DriveName As String) As String
Dim returnDrive As String = ""
For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()
If (drive.DriveType = (IO.DriveType.Fixed Or IO.DriveType.Removable)) Then 'Only interested in removable drives
If (drive.VolumeLabel.Equals(DriveName, StringComparison.OrdinalIgnoreCase)) Then
'This is our drive!
returnDrive = drive.Name
End If
End If
Next drive
Return returnDrive
End Function
End Module
次に、アプリケーションに適切な名前 (例: StartByDriveName.exe) を付けてビルドし、コンパイルします。
バッチファイルで使用できるようになりました:
StartByDriveName <driveName>:<path>\ProgramName
例: StartByDriveName MomsUSB:\Program Files\Excel.Exe
ディスク管理ユーティリティで、特定のドライブ文字を個々のデバイスに永続的に割り当てることができると思います