Solved

VBScript get self and parent folder name

Posted on 2009-04-01
1
9,459 Views
Last Modified: 2012-05-06
I'm overlooking somethign here. This script is saved as "location.vbs" and returns the name of the folder that location.vbs is in when run, and the parent folder. It works correctly when placed in any folder at least 3 directories down from the root, but fails on anything one or two directories from the root.

I'm having a brain-fade as to why. I need this to give me the name of the folder (note, NOT the path, just the folder name) that the script is sitting in when run, regardless of where that is. (The script will be moved, so it can't be hard-coded) and the name of the parent folder (if any, or null if the script is on root.)

Dim filesys
Set filesys = CreateObject("Scripting.FileSystemObject")
varPathCurrent = filesys.GetParentFolderName(WScript.ScriptFullName)
varPathParent = filesys.GetParentFolderName(varPathCurrent)
varPathGrandParent = filesys.GetParentFolderName(varPathParent)

varNameFolderCurrent = mid(varPathCurrent, len(varPathParent) + 2 , len(varPathCurrent) - len(varPathParent) - 1)
varNameFolderParent = mid(varPathCurrent, len(varPathGrandParent) + 2 , len(varPathCurrent) - len(varPathGrandParent) - len(varNameFolderCurrent) - 2)

msgbox varNameFolderCurrent & vbCrLf & varNameFolderParent
0
Comment
Question by:mcj
1 Comment
 
LVL 65

Accepted Solution

by:
RobSampson earned 125 total points
ID: 24044771
Hi there.

See if this works for you.

Regards,

Rob.
Dim filesys

Set filesys = CreateObject("Scripting.FileSystemObject")

varPathCurrent = filesys.GetParentFolderName(WScript.ScriptFullName)

varPathParent = filesys.GetParentFolderName(varPathCurrent)

varPathGrandParent = filesys.GetParentFolderName(varPathParent)
 

If filesys.FolderExists(varPathCurrent) Then

	If InStrRev(varPathCurrent, "\") < Len(varPathCurrent) Then

		varPathCurrent = Mid(varPathCurrent, InStrRev(varPathCurrent, "\") + 1)

	Else

		varPathCurrent = Left(varPathCurrent, Len(varPathCurrent) - 1)

	End If

Else

	varPathCurrent = ""

End If
 

If filesys.FolderExists(varPathParent) Then

	If InStrRev(varPathParent, "\") < Len(varPathParent) Then

		varPathParent = Mid(varPathParent, InStrRev(varPathParent, "\") + 1)

	Else

		varPathParent = Left(varPathParent, Len(varPathParent) - 1)

	End If

Else

	varPathParent = ""

End If
 

msgbox varPathCurrent & vbCrLf & varPathParent

Open in new window

0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Welcome back!  My apologies for taking so long to write part two of this series; it's been a long time coming!  As I promised in Part 1, this article will focus on how to locate those elusive AD properties that you are searching for.  Why is this us…
This script will sweep a range of IP addresses (class c only, 255.255.255.0) and report to a log the version of office installed. What it does: 1.)      Creates log file in the directory the script is run from (if it doesn't already exist) 2.)      Sweep…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now