[英]How do I get the output CLASS file names after compiling Java files in C#?
[英]In a Batch file, How do I get files with the largest number in the names?
我需要在命令提示符窗口批處理文件中執行此操作。 我有一個批處理文件,我需要比較2個文件的文件名; 例如,我有whatever-5428.jar
whatever-9001.jar
和whatever-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
1234.txt
和abcd.txt
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.