• 0

Script to detect current drive letter


Question

Hi,

I'm currently using a batch file to run SUBST to load a program off my USB drive

SUBST Z: "G:\FolderName"
Z:\program.exe
SUBST Z: /D

However, since the USB drive letter changes when I plugin to different computers, I'm having to edit the batch file every single time. Is it possible to write a script/program/something which can detect the current drive letter (of the USB drive) that it is run from and pass this drive letter to the SUBST command to load a virtual drive off a folder on the USB drive?

I can't just run the program off the USB drive as the setting file it uses has hard-coded links.

I'd really appreciate it if someone could help me write up a quick program. A script would not be all that preferable as a lot of the computers that I use block the use of vbs scripts. Best would be something which can be compiled into an exe. I myself am vaguely familiar with AHK scripts but I can't seem to find a command to detect current drive letter in AHK. What scripting language should I be looking at then? C#? VB?

Thanks!

6 answers to this question

Recommended Posts

  • 0

Try this VBS Script it should do what.

Save As SUBST.vbs

 Dim Act :Set Act = CreateObject("Wscript.Shell")
 Dim Fso :Set Fso = CreateObject("Scripting.FileSystemObject")
 Dim Target
 Dim D1, D2, D3
'/-> Set The Target Folder Path Without The Drive Letter
  Target = "FolderName"
   For Each D1 In Fso.Drives
	If D1.IsReady Then
'/-> Add The Drive Letter To Target
	 D2 = D1.DriveLetter & ":\"
	 D3 = D2 & Target
'/-> If Folder Found Run The Subst
	  If Fso.FolderExists(D3) Then
	   Act.Run(_
	   "%Comspec% /C @ECHO OFF && CLS && COLOR F9 && MODE 55,7 && " &_
	   "TITLE SUBST && Echo. && Echo Processing  SUBST cmd && " &_
	   "SUBST Z: " & Chr(34) & D3 & Chr(34) & " && Z:\program.exe && " &_
	   "SUBST Z: /D && Exit"),1,True 
	  End If
	End If 
   Next
  • 0

Hi jake1eye,

Your script works beautifully. I also managed to figure out how to do the same thing in a batch file.

SUBST Z: "%~d0\FolderName"
Z:\program.exe
SUBST Z: /D

It seems to be a bit quicker than your vbs.

Now, if only there was a way of converting either the bat or the vbs file into an exe so that it would work on systems which block scripts from running. I know there any many pay/shareware programs available which claim to do this, but is there a free one that works?

Or can I do the same thing in VB?

Edit: the vbstoexe program available here works great. But bat 2 exe converter also available from there seems to process the whole bat file without waiting for the program to open and close (like how the bat and vbs files work).

I'd still like to be able to edit the icon of the exe file produced. So, I'd still like to know if this thing is possible in VB? I haven't touched VB for about 6 years and so am not sure if it'll work.

Thanks!

Edited by ramian
  • 0

Myself if I want the script to act like a exe, I just use Winrar Sfx.

I added couple of lines to the original Vbs file so it runs from temp

after it has been extracted, fom the Sfx.

 Dim Act :Set Act = CreateObject("Wscript.Shell")
 Dim Fso :Set Fso = CreateObject("Scripting.FileSystemObject")
 Dim Target,Tmp
 Dim D1, D2, D3
'-> Set The Temp Loation For The Sile
 Tmp = Act.ExpandEnvironmentStrings("%Temp%")
'/-> Set The Target Folder Path Without The Drive Letter
  Target = "FolderName"
   For Each D1 In Fso.Drives
	If D1.IsReady Then
'/-> Add The Drive Letter To Target
	 D2 = D1.DriveLetter & ":\"
	 D3 = D2 & Target
'/-> If Folder Found Run The Subst
	  If Fso.FolderExists(D3) Then
	   Act.Run(_
	   "%Comspec% /C @ECHO OFF && CLS && COLOR F9 && MODE 55,7 && " &_
	   "TITLE SUBST && Echo. && Echo Processing  SUBST cmd && " &_
	   "SUBST Z: " & Chr(34) & D3 & Chr(34) & " && Z:\program.exe && " &_
	   "SUBST Z: /D && Exit"),1,True 
	  End If
	End If 
   Next
'/-> Delete The File 
  Fso.DeleteFile(WScript.ScriptFullName)

This a Link to my custom Winrar Sfx with the above code changes

Subst Sfx

  • 0
Myself if I want the script to act like a exe, I just use Winrar Sfx.

I added couple of lines to the original Vbs file so it runs from temp

after it has been extracted, fom the Sfx.

This a Link to my custom Winrar Sfx with the above code changes

Subst Sfx

Hi everyone,

I know this post is a few months later, but I really need a fast response. I'm doing the same thing as ramian except with a DVD, so it should be the exact same idea. I am fairly new to programming but am very computer literate. Anyway, I am creating DVDs to sell with videos on them, and a PDF file with links to open the videos. The guide will be in the root directory and the videos will be in a folder named "videos". I didn't think this would be necessary to do since the PDF was on the same drive as the videos, but Adobe 6.0 doesn't let you create relative links, only absolute ones.

So anyway, I am going to make an autorun file that will execute these scripts and assign a drive letter such as Z, and then I can hopefully get Adobe to do that, which it should. I tried copying and pasting these scripts into notepad, saving them with the .vbs or .bat file extensions and adjusting them accordingly, but I was unsuccessful. I had it working once, but then it stopped? When I executed the scripts, it would either continuously open new windows until I deleted the file, freeze and say "loading subst", or the cursor would load and nothing would come up (as desired), but the new drive letter wouldn't be in My Computer. I did much better with the vbs than bat. Here is what I tried with the provided scripts:

Dim Act :Set Act = CreateObject("Wscript.Shell")

Dim Fso :Set Fso = CreateObject("Scripting.FileSystemObject")

Dim Target

Dim D1, D2, D3

'/-> Set The Target Folder Path Without The Drive Letter

Target = "Videos"

For Each D1 In Fso.Drives

If D1.IsReady Then

'/-> Add The Drive Letter To Target

D2 = D1.DriveLetter & ":\"

D3 = D2 & Target

'/-> If Folder Found Run The Subst

If Fso.FolderExists(D3) Then

Act.Run(_

"%Comspec% /C @ECHO OFF && CLS && COLOR F9 && MODE 55,7 && " &_

"TITLE SUBST && Echo. && Echo Processing SUBST cmd && " &_

"SUBST Q: " & Chr(34) & D3 & Chr(34) & " && Q:\readme.txt && " &_

"SUBST Q: /D && Exit"),1,True

End If

End If

Next

I was hoping to have the virtual drive assigned and stay assigned until the computer is off, and then also have the readme.txt pop up. What am I doing wrong? Need help fast. Thanks!

Kris

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • There is a default resolution setting in Settings > Display that can be changed with a click. You can also change the settings on a per-game basis. No CLI needed. Also, Steam has countless games that are not "[perpetual] alpha/beta games", so no need for the straw man. Plus you can use other stores as well. And console games (e.g. PS5) cost a fortune, which itself more than negates the price subsidy on the system, unless you plan on exclusively playing 1 or 2 games. It's true that you shouldn't buy a system that doesn't support the game(s) you want to play, but I think that's kinda obvious, and applies to every console as well as PC. I don't game in the living room and have no need of a Steam Machine, but there is a clear market segment that would find it useful.
    • RSS Guard 5.2.0 by Razvan Serea RSS Guard is a simple (yet powerful) feed reader. It is able to fetch the most known feed formats, including RSS/RDF and ATOM. It's free, it's open-source. RSS Guard currently supports Czech, Dutch, English, French, German, Italian. RSS Guard will never depend on other services - this includes online news aggregators like Feedly, The Old Reader and others. RSS Guard is developed on top of the Qt library and it supports these operating systems: Windows GNU/Linux OS/2 (eComStation) Mac OS X xBSD (possibly) Android (possibly) other platforms supported by Qt The core features of RSS Guard are: support for online feed synchronization via plugins, Tiny Tiny RSS (from RSS Guard 3.0.0). multiplatform, support for all feed formats, simplicity, import/export of feeds to/from OPML 2.0, downloader with own tab and support for up to 6 parallel downloads, message filter with regular expressions, feed metadata fetching including icons, simple Adblock functionality, customized popup notifications, Google-based auto-completion for internal web browser location bar, ability to cleanup internal message database with various options, enhanced feed auto-updating with separate time intervals, multiple data backend support, SQLite (in-memory DBs too), MySQL. is able to specify target database by its name (MySQL backend), “portable” mode support with clever auto-detection, feed categorization, drap-n-drop for feed list, automatic checking for updates, ability to discover existing feeds on websites, full support of podcasts (both RSS & ATOM), ability to backup/restore database or settings, fully-featured recycle bin, printing of messages and any web pages, can be fully controlled via keyboard, feed authentication (Digest-MD5, BASIC, NTLM-2), handles tons of messages & feeds, sweet look & feel, fully adjustable toolbars (changeable buttons and style), ability to check for updates on all platforms + self-updating on Windows, hideable main menu, toolbars and list headers, KFeanza-based default icon theme + ability to create your own icon themes, fully skinnable user interface + ability to create your own skins, “newspaper” view, plenty of skins, support for "feed://" URI scheme, ability to hide list of feeds/categories, open-source development model based on GNU GPL license, version 3, tabbed interface, integrated web browser with adjustable behavior + external browser support, internal web browser mouse gestures support, desktop integration via tray icon, localizations to some languages, Qt library is the only dependency, open-source development model and friendly author waiting for your feedback, no ads, no hidden costs. RSS Guard 5.2.0 changelog: Added: Feed auto-fetch can now also be delayed while Feral GameMode is active on Linux and startup auto-fetch is skipped when GameMode is already active. (#2265) WebEngine builds can now use RSS Guard generated proxy auto-config (PAC) rules so article/web browsing follows per-account and per-feed proxy settings more closely. (#2273) Generated PAC rules now also cover related subdomains and use Public Suffix List data, so feeds such as feeds.bbc.co.uk can also proxy resources from images.bbc.co.uk. (#2273) Standard feeds can now define extra proxy domains, useful when article images, stylesheets or other page resources are loaded from a CDN or another domain that should use the same feed proxy. (#2273) RSS Guard now asks for proxy credentials when a WebEngine page needs proxy authentication and can fill credentials from the current feed proxy when available. (#2273) Network settings again include an option to ignore all cookies, which clears stored cookies and prevents new cookies from being accepted. Standard RSS/ATOM feeds can now individually ignore cookies while downloading feed data. Stored cookies can now be deleted from the Tools menu. Custom skin colors can now override the feed list article count color separately from feed titles, including a separate highlighted color. (#2275) Settings dialog can now search across available settings and highlight matching controls. (#1754) Standard RSS/ATOM feeds can now optionally be reported as broken when they are valid but contain no articles. (#2039) Standard RSS/ATOM feeds can now override the application-wide feed connection timeout per feed. (#1023) Tray icon can now use a custom background color and unread-count text color, with an option to reuse the generated icon as the application icon. (#1973) Support for more benevolent parsing of Gemlog entries (#2295). Article list can now show when an article was received by RSS Guard. (#947) Feed deep discovery now actually scrapes all links found in the website and checks if they are feeds or not. This greatly enhances usability of the deep discovery mode and discovers many more feeds than before. (#2306) Search boxes now show a small dot when the feed or article list is hiding some items because of active filtering. (#873) Articles now have a shortcut-assignable action to open the homepage of the feed they belong to. (#2060) Fixed: Parallel feed updates no longer crash when multiple update results are processed at the same time. (64cf521) Links in WebEngine articles opened from feeds such as Kill the Newsletter now open correctly instead of being swallowed by the embedded page. (#2272) Relative article URLs resolution was kinda broken. (#2282) Clicking article URL did not work when the URL had "fragment" set. (#2293) The default proxy setting now uses Qt/system default proxy behavior instead of forcing no proxy. (e0263ad) WebEngine article loading now keeps the current feed context, so feed-specific proxy credentials remain available while the article page loads. (fdd0f00) Download: RSS Guard 5.2.0 (64-bit) | Portable | ~ 130.0 MB (Open Source) Link: RSS Guard Home Page | Other Operating Systems | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • This is gonna separate the creeps from the rest of the crowd.
    • "Claude, is our CEO a compete and utter fool by wasting money on AI in this already worthless Teams chat?"
  • Recent Achievements

    • Rookie
      DaviKar went up a rank
      Rookie
    • Dedicated
      HidekoYamamoto94 earned a badge
      Dedicated
    • One Month Later
      timbobit earned a badge
      One Month Later
    • One Month Later
      nates earned a badge
      One Month Later
    • Week One Done
      Almohandis earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      462
    2. 2
      +Edouard
      161
    3. 3
      PsYcHoKiLLa
      110
    4. 4
      Michael Scrip
      83
    5. 5
      Steven P.
      69
  • Tell a friend

    Love Neowin? Tell a friend!