In my bat script, I\'m calling another script and passing it a string parameter
cscript log.vbs \"triggered from folder by Eric\"
<
If you want the directory where you're currently at, you can get that from %cd%
. That's your current working directory.
If you're going to be changing your current working directory during the script execution, just save it at the start:
set startdir=%cd%
then you can use %startdir%
in your code regardless of any changes later on (which affect %cd%
).
If you just want to get the last component of that path (as per your comment), you can use the following as a baseline:
@setlocal enableextensions enabledelayedexpansion @echo off set startdir=%cd% set temp=%startdir% set folder= :loop if not "x%temp:~-1%"=="x\" ( set folder=!temp:~-1!!folder! set temp=!temp:~0,-1! goto :loop ) echo.startdir = %startdir% echo.folder = %folder% endlocal && set folder=%folder%
This outputs:
C:\Documents and Settings\Pax> testprog.cmd startdir = C:\Documents and Settings\Pax folder = Pax
It works by copying the characters from the end of the full path, one at a time, until it finds the \
separator. It's neither pretty nor efficient, but Windows batch programming rarely is :-)
EDIT
Actually, there is a simple and very efficient method to get the last component name.
for %%F in ("%cd%") do set "folder=%~nxF"
Not an issue for this situation, but if you are dealing with a variable containing a path that may or may not end with \
, then you can guarantee the correct result by appending \.
for %%F in ("%pathVar%\.") do set "folder=%~nxF"