簡體   English   中英

在批處理文件中,如何獲取名稱中編號最大的文件?

[英]In a Batch file, How do I get files with the largest number in the names?

我需要在命令提示符窗口批處理文件中執行此操作。 我有一個批處理文件,我需要比較2個文件的文件名; 例如,我有whatever-5428.jar whatever-9001.jarwhatever-5428.jar whatever-9001.jar以及更多whatever*.jar文件。

我需要為批處理文件創建一個腳本,以便它使用具有最高編號的jar。 (9001高於5428)。 這使我更加困難,因為我無法執行java -jar -Xmx2G -XX:MaxPermSize=256m whatever*.jar因為Java不喜歡通配符。

我需要在上面的Java腳本中使用它,因為我正在使用一定數量的RAM和Perm Size啟動它。

在批處理文件中,如何獲取其中編號最大的jar文件? 我根本不確定如何使用Java,我只是從批處理文件中啟動它,也許可以使用某種方法來檢查具有最大編號的文件,然后使用以下命令行啟動該文件: java -jar -Xmx2G -XX:MaxPermSize=256m MYFILENAMEWITHTHEHIGHESTNUMBERATTHEEND.jar

在此處查看我的批處理文件: http : //www.fileswap.com/dl/XyvIN2VpgF/

我將使用Java Regex解析出要在兩個文件之間進行比較的數字。 正則表達式非常靈活,將能夠處理通配符

編輯:請參見以下帶有輸出的示例:

public static void main(String[] args) throws Exception
{
    System.out.println(getTrailingNumber("whatever-5428.jar"));
    System.out.println(getTrailingNumber("whatever-9001.jar"));
}

public static String getTrailingNumber(String filename)
{
    Pattern pattern = Pattern.compile("-(\\d+)\\.");

    Matcher matcher = pattern.matcher(filename);
    matcher.find();

    return matcher.group(1);
}

輸出:

5428
9001

在Windows批處理文件中使用DOS進行字符串匹配和正則表達式確實很丑陋。 這就像試圖使用電鋸來敲釘子一樣。 可以做到,但是應該嗎? 沒有。

dos命令findstr可以執行有限數量的匹配和正則表達式,如下例所示:

@Echo Off
CD "C:\workspace"
Dir /B>Dir.temp
FindStr /R "[0-9]" "Dir.temp">FindStr.temp
Del Dir.temp
For /F "tokens=*" %%a In (FindStr.temp) Do Call :WorkIt "%%a"
Del FindStr.temp
Exit /B

:WorkIt
:: Insert code here.  Use %1 to get the file name with quotes.  For example:
Echo Found a number in %1
Exit /B
  1. 創建一個名為C:\\ workspace的目錄。
  2. 創建一個名為mybat.bat的文件,並將上面的代碼放入其中。
  3. 將兩個文件分別放在C:\\ workspace中,稱為1234.txtabcd.txt
  4. 運行上面的bat文件。
  5. 輸出如下:

C:\\ workspace> mybatch.bat

在“ 1234.txt”中找到一個號碼

DOS FindStr命令僅返回其中包含數字0到9的文件/文件夾。 它省略了abcd.txt並包含1234.txt 您可能會增加正則表達式的復雜性以僅解析數字,然后將其轉換為整數,然后返回具有最大數字的數字。

for /f %%a in ('dir /b ^|sort /r ^|findstr /r [0-9]') do (
  set "filename=%%a"
  goto done
)
:done
echo the highest found is %filename%
exit /b 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM