2

Inside a batch file on Windows I would like some variable to have the output of dir /b command.

How this can be achieved ?

1

3 Answers 3

2

Batch files didn't handle this use case very well. I did find one thread that describes a technique using temporary files.

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

Comments

1

On Windows, there's a better facility that comes pre-installed. Its called vbscript (and later there is Powershell ). Why don't you use vbscript instead.

strFolder="c:\test"
Set objFS = CreateObject( "Scripting.FileSystemObject" )
Set objFolder = objFS.GetFolder(strFolder)
s=""
For Each strFile In objFolder.Files
    s=s & strFile & vbCrLf
Next
WScript.Echo s

The variable s now contains a list of files (equivalent to dir ). And if you want to store each filename into arrays, its also possible. (cmd.exe does not have arrays etc)

1 Comment

Just a note to whoever does not like this approach just because of not liking the VB syntax (such as myself) - the same utility (wscript/cscript, which comes with Windows) supports JScript (the Javascript engine of IE) too. I've recently built an entire build system using JScript, and it was pretty good because I like Javascript.
1
@ECHO OFF
setlocal enabledelayedexpansion
set LF=^


rem ** The two empty lines are NECESSARY
set output=
FOR /F %%i in ('dir /b') do SET output=!output!!LF!%%i
ECHO !output!

Comments

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.