Reputation: 17796
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
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
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
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
Reputation: 44
set variableName = dir /b /od C;\test\image?.txt | findstr ^1
note: this is untested. Source:
Upvotes: -2