The value that you are assigning to directoryname
is dir /s c:\abc.exe
.
this value is then substituted for %directoryname%
in your cmd
line, which executes the command dir/s...
, showing you the location(s) of abc.exe
in the familiar dir
format.
If what you want is just the directoryname in directoryname
, then you need
for /f "delims=" %%a in ('dir /s /B /a-d "c:\abc.exe"') do set "directoryname=%%~dpa"
which will first execute the dir
command, then process each line of output from that command and assign it in its entirety to %%a
.
The dir
command shown would "display" the matching names found in the nominated directory (c:\
) and its subdirectories (/s
) in basic form (/b
) - that is, names only, no size or date or report-headers or report-footers, and a-d
without directorynames (should they match the "mask" abc.exe
)
The delims=
option to the for /f
command instructs that the entire line as output by the command in single-quotes, be assigned to %%a
.
When the result is assigned to the variable directoryname
, only the Drive and Path parts are selected by using the ~dp
prefix the the a
.
Note that only the very last name found will be assigned to the variable as any earlier assignment will be overwritten by a succeeding assignment.