me.at.coding
me.at.coding

Reputation: 17796

Put command output into a variable

Given a directory with the following files

image1.txt
image2.txt
image3.txt

I want to get the oldest file (let the files be sorted by data, oldset date first):

dir /b /od c:\test\image?.txt | findstr ^1

That works great when manually typing it into cmd.exe. Now (in a batch script) I want to put the output of this command in a variable. How can I do this? Thank you!

Update: Wondering if there is a direct way without usng a loop?

Upvotes: 2

Views: 7592

Answers (4)

Riccardo La Marca
Riccardo La Marca

Reputation: 895

Example:

wmic path Win32_VideoController get CurrentHorizontalResolution | FINDSTR [0-9] > X.txt 'Output in a file
wmic path Win32_VideoController get CurrentVerticalResolution | FINDSTR [0-9] > Y.txt
wmic path Win32_VideoController get CurrentRefreshRate | FINDSTR [0-9] > Hz.txt
wmic path Win32_VideoController get CurrentBitsPerPixel | FINDSTR [0-9] > Bits.txt
set /p X= < X.txt 'Input from a file
set /p Y= < Y.txt
set /p Hz= < Hz.txt
set /p Bits= < Bits.txt
set X=%X: =% 'Remove the spaces
set Y=%Y: =%
set Hz=%Hz: =%
set Bits=%Bits: =%
DEL /q X.txt 'Delete file created
DEL /q Y.txt
DEL /q Hz.txt
DEL /q Bits.txt

Four steps.

Upvotes: 0

Habib
Habib

Reputation: 223402

For /F %%A in ('"dir /b /od C:\test\image*.txt|findstr ^1"') do set myVar=%%A

You could do it through For loop, try that in command line, I just tested it and it works fine

Output:

set myVar=image1.txt

On executing Set on command line you can see:

myVar=image1.txt
NUMBER_OF_PROCESSORS=2

Upvotes: 3

jeb
jeb

Reputation: 82410

There isn't a direct way, the FOR-Loop is one way or the other way is set /p with a temporary file.

dir /b /od c:\test\image?.txt | findstr ^1 > oldest.tmp
< oldest.tmp set /p myVar=

Upvotes: 2

Trevor Jones
Trevor Jones

Reputation: 44

set variableName = dir /b /od C;\test\image?.txt | findstr ^1

note: this is untested. Source:

Google

Upvotes: -2

Related Questions