4

I would like a batch script to all the text documents in a folder. This is what I have managed so far:

@ECHO off
title Test
set dir1=C:\Users\Family\Desktop\Example

:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit

:test
cls
echo running loop test 
FOR %%n in (%dir1% *.txt) DO echo %dir1%\%%n
echo Done
pause

What I would like outputted is:

running loop test
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done

But I Get this:

running loop test
C:\Users\Family\Desktop\Example\C:\Users\Family\Desktop\Example
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done

1 Answer 1

12

The main problem seems to be the space between (%dir1% *.txt)

It could be

@ECHO off
title Test
set "dir1=C:\Users\Family\Desktop\Example"

:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit

:test
cls
echo running loop test 
FOR %%X in ("%dir1%\*.txt") DO echo %%~dpnX
echo Done
pause

The quotes are for avoiding problems with spaces or other special characters in the path.

EDIT:
The %%~dpnX is for expanding the filename of %%X to
d=drive(C:)
p=path(\Users\Family\Desktop\Example)
n=filename(test1) (without extension)

f=full filename(C:\Users\Family\Desktop\Example\test1.txt).

The possible modifiers are explained here FOR /?

Sign up to request clarification or add additional context in comments.

3 Comments

Thank You that worked perfectly. Could you explain %%~dpfX to me?
%%~nX just filename (test1), filename with extension - %%~nxX (test1.txt).
To clarify: note that in his code %%X is the whole filename that was found. The other pieces ~dpn are modifiers to the %%X. So as user 2nd said, use the ~n modifier on the variable to output just the file by calling echo %%~nX

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.