2013-02-07 37 views
0

對於很長的標題的道歉,我想知道是否有人可以幫助我解決這個問題。批處理腳本讀取包含path-to-dir的文件,並獲取最新文件,從文件中讀取最後一行並打印

我想要做的是讀取包含10個不同目錄路徑的文件,獲取該目錄中的最新文件並從該文件讀取最後一行。

@echo off 
setlocal enableextensions enabledelayedexpansion 
set host=%COMPUTERNAME% 
echo Host: %host% 
for /f "tokens=* delims=" %%I in (C:\temp\servers.txt) do (
    SET /A vidx=!vidx! + 1 
    set var!vidx!=%%I 
    echo Path-to-File: %%I 
    for /f "tokens=* delims=" %%X in ('dir "%%I" /OD /B') do (
    set newest=%%X 
    ) 
    echo %newest% 
    ) 

這裏是輸出:

​​

在此先感謝您的幫助。

+0

如果你有'回聲%最新%'嘗試將其更改爲'迴音!最新!',看看是否有什麼差別。 – rojo

+0

哇..那工作..謝謝噸rojo ..如果這是reddit,我會給你的reddit黃金!只是好奇有什麼區別..我完全不熟悉批處理腳本。 – user2051904

+0

在cmd提示窗口中,鍵入'help set'和空格鍵四五次,直到進入「延遲環境變量擴展」部分。 – rojo

回答

0

對不起,我對你的描述有些困惑。下面的批處理文件是根據我瞭解您的要求編寫的。

@echo off 
setlocal EnableDelayedExpansion 
echo Host: %COMPUTERNAME% 

rem Process the file with the paths: 
for /F "delims=" %%I in (C:\temp\servers.txt) do (
    echo Path-to-File: %%I 
    rem Get the newest file in this directory 
    for /F "delims=" %%X in ('dir "%%I" /OD /B') do (
     set "newest=%%~X" 
    ) 
    echo Newest-File: !newest! 
    rem Read the last line from this file 
    for /F "usebackq delims=" %%L in ("!newest!") do (
     set "lastLine=%%L" 
    ) 
    echo Last-Line: !lastLine! 
) 

我希望它可以幫助...

安東尼

+0

歡呼夥計們。 :) – user2051904

相關問題