2014-08-28 94 views
2

請幫助我在記事本中使用以下方案中的批處理腳本打開文件app.log.192192193如何根據文件名中的最大數字從批處理文件在記事本中打開文件?

c:\Abcd\app\log 
    app.log.123123123 --- 200KB  same date time 
    app.log.143143143 --- 20000KB same date time 
    app.log.192192193 --- 0KB  same date time 

簡而言之,所有文件具有相同的日期和時間以及大小和文件名稱的不同。 需要打開文件名中有較大值的文件,即1921192193> 143143143

+1

你已經嘗試過任何東西嗎? – 2014-08-28 09:41:07

+0

嘗試啓動wgnplot.exe「c:\ New Folder \ New Text Document.log」。它錯了。 – Jai 2014-08-28 10:01:27

+0

@Jawahar - 我的回答已被編輯。 – npocmaka 2014-08-28 10:33:25

回答

1

這是我用更少行的批處理解決方案,這無疑工程示例文件名。

@echo off 
setlocal EnableDelayedExpansion 
set GreatestNumber=.0 
for /F %%f in ('dir "C:\Abcd\app\log\app.log.*" /B 2^>nul') do (
    if "%%~xf" GTR "!GreatestNumber!" set "GreatestNumber=%%~xf" 
) 
if not "%GreatestNumber%" == ".0" (
    start "Notepad" %SystemRoot%\System32\Notepad.exe "C:\Abcd\app\log\app.log%GreatestNumber%" 
) 
endlocal 
+0

謝謝@Mofi,上面的腳本跑完了。你可以添加一些調整來打開記事本到最後。 – Jai 2014-09-01 10:09:20

+0

如果目錄「C:\ Abcd \ app \ log \」中至少有一個'app.log。*'文件,則在批處理文件結束時啓動記事本。 – Mofi 2014-09-01 11:05:13

4

打開最大的文件。

@echo off 
set log_dir=c:\log_dir 
pushd "%log_dir%" 

for /f "delims=" %%f in ('dir /b /o:s app.log.*') do (
    set "largest_log=%%~ff" 
) 

start notepad "%largest_log%" 

編輯 - 打開與最多的文件,它的名字

@echo off 
set log_dir=c:\log_dir 
pushd "%log_dir%" 
setlocal enableDelayedExpansion 
set "current_number=0" 
for /f "tokens=3 delims=." %%f in ('dir /b /o:s app.log.*') do (
    if %%~f GTR !current_number! (
     set "current_number=%%f" 
    ) 
) 

start notepad "app.log.%current_number%" 
+1

你不需要按名稱排序嗎? npocmaka的解決方案按照文件大小排序。這種解決方案的文件名也需要相同的長度。從這個問題:'在文件名中有更大的價值(1921192193> 143143143)' – foxidrive 2014-08-28 10:23:10

+0

@foxidrive oouch.I錯過了這個問題。我認爲最大的文件需要打開。我會修復它。 – npocmaka 2014-08-28 10:26:13

+0

感謝指出錯過,當我試圖運行新腳本我得到了一個像app.log.0彈出式不存在。你想創建是否取消 – Jai 2014-08-28 13:05:35

1
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
SET "mostnum=" 
SET "moststr=." 
SET "dots=..........................................................." 
FOR %%a IN ("%sourcedir%\app.log.*") DO (
SET tempstr=%dots%%%~xa 
SET "tempstr=!tempstr:~-30!" 
IF !tempstr! gtr !moststr! (
    set "moststr=!tempstr!" 
    SET mostnum=%%~xa 
) 
) 

ECHO(notepad "%sourcedir%\app.log%mostnum%" 

GOTO :EOF 

你需要改變的sourcedir設置,以滿足您的具體情況。

你還沒有告訴我們你的電話號碼有多長,或者電話號碼是否可變。這應該處理多達30位數字。使用gtr但不填充數字的解決方案假定最終數字部分的長度爲常數,等於或少於九位數。

notepad命令僅用於測試目的的echo確認命令正確後,將ECHO(notepad更改爲notepad實際上有記事本打開文件。

+0

Thanks @Magoo,數字長度爲10位數字。它的工作正常。但記事本沒有在文件末尾打開。 – Jai 2014-09-01 10:03:12

+0

您是否已將'ECHO(notepad')更改爲'notepad',如註釋中所述?'notepad.exe'在'path'中?最後會發生什麼? – Magoo 2014-09-01 10:05:17

+0

進行了更改,打開文件時沒有問題。當記事本在光標開始處在頁面開始時,是否可以打開日誌文件到頁面末尾(最新日誌) – Jai 2014-09-01 10:18:15

相關問題