2012-04-12 152 views
1

考慮到與以下文件的目錄PUT命令輸出到一個變量

image1.txt 
image2.txt 
image3.txt 

我想要得到的最早的文件(讓文件的數據進行排序,oldset日期在前):

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

手動將其輸入cmd.exe時效果很好。現在(在批處理腳本中)我想把這個命令的輸出放在一個變量中。我怎樣才能做到這一點?謝謝!

更新: 想知道是否有一個直接的方式沒有使用循環?

回答

-1

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

注意:這是未經測試的。 來源:

Google

+0

我也希望在發佈之前發現這種行爲,但它不會以其他命令的輸出方式工作 – 2012-04-12 20:15:55

+0

而且它不起作用。 cmd.exe只會將'variableName'設置爲'dir/b/od C; \ test \ image?.txt',但不會執行它。但是由於有一個管道,它會在新的cmd-context中執行'findstr 1'。最後,即使'variableName'也是空的。 – jeb 2012-04-12 20:40:00

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

你可以做到這一點通過For循環,嘗試在命令行中,我只是測試它,它工作正常

輸出:

set myVar=image1.txt 

在命令行上執行Set時,您可以看到:

myVar=image1.txt 
NUMBER_OF_PROCESSORS=2 
+0

謝謝,我更新了我的問題,我想知道是否有沒有循環的方法 – 2012-04-12 20:15:23

+1

您應該避免使用像'set myVar = %A'這樣的表達式,因爲它會創建一個帶有空格的變量,因此您必須使用'%myVar%'/'%myVar %'擴展它 – jeb 2012-04-12 20:32:33

+0

@jeb,謝謝,我已經更新了我的問題 – Habib 2012-04-13 05:34:02

1

有沒有直接的方式,FOR-Loop是一種方式或其他方式是設置/ p與臨時文件。

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