2012-09-23 3 views
0

J'ai attribué un nom à un lecteur USB et je me demandais s'il existait un moyen facile d'utiliser un raccourci sur le bureau en fonction du nom plutôt que de la lettre.Fichier batch sur un lecteur USB basé sur le nom du lecteur

Ainsi, au lieu de: F: \ program_to_run.exe il fonctionnerait comme: Drivename: \ program_to_run.exe

Bien que ce qui précède serait clairement pas fonctionner, peut quelque chose de semblable à cela soit fait avec soit un raccourci ou un simple fichier batch?

Répondre

1

Puisque vous êtes juste en VB.Net, que diriez-vous de créer un programme de ligne de commande pour le faire pour vous ?

  1. Créer une application console

coller ce code:

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 

Ensuite, compilez donner votre demande un joli nom (par exemple StartByDriveName.exe) et le compiler.

Vous pouvez maintenant l'utiliser dans un fichier batch:

StartByDriveName <driveName>:<path>\ProgramName

par exemple StartByDriveName MomsUSB: \ Program Files \ Excel.Exe

0

Je crois que vous pouvez assigner en permanence une certaine lettre de lecteur à des périphériques individuels à l'utilitaire de gestion des disques

+0

Je suis en train d'essayer d'éviter les solutions de contournement pour cette tâche, car aucune n'est idéale. Attribuer une lettre de lecteur permanente peut conduire à des conflits sur la route que je voudrais éviter. – KevinD

+0

avec linux vous pouvez assigner un point de montage à l'uid de l'appareil, mais je n'ai pas entendu parler d'une telle fonctionnalité sur windoze. –

Questions connexes