我想在Downloads文件夹中打开以.jar结尾的每个文件。我的代码不起作用。我做错了什么以及如何实现我的最终目标?
代码:
del /s /q "C:\Users\%USERNAME%\AppData\Roaming\.minecraft\session.*"
cls
:choice
cls
set /P c=Open the file? [Y/N]
if /I "%c%" EQU "Y" goto :start
if /I "%c%" EQU "N" goto :choice
goto :choice
:start
start "" "C:\Users\Home Computer\Downloads\????.jar"
del /s /q "C:\Windows\Prefetch\JAVA*.pf"
del /s /q "C:\Users\Home Computer\Recent\*.bat.lnk"
del /s /q "C:\Users\Home Computer\Recent\????.jar.*"
del /s /q "C:\Users\Home Computer\Recent\Downloads.lnk"
pause
编辑:我还应该提到每次下载时.jar的名称都会更改。我无法通过文件名专门定位它。文件名总是四个字符。
答案 0 :(得分:0)
如果文件的名称每次都有相同的字符数,那么你可以使用?对于每个字符而不是*。 假设文件名长度为3个字符,那么您可以将命令编写为:
start "" "C:\Users\Home Computer\Downloads\???.jar"
也许您可以从以下链接中获取一些参考资料:
答案 1 :(得分:0)
试
start "" "C:\Users\Home Computer\Downloads\*.jar"
或
java -jar "C:\Users\Home Computer\Downloads\*.jar"
答案 2 :(得分:0)
您可以使用Where
命令识别下载文件的名称。 (当然,如果你没有超过四个字符.jar文件,它只能识别它。
@Echo Off
Del/S/Q "%AppData%\.minecraft\session.*" 2>Nul
:Pick
ClS
Choice /M "Open the file"
If ErrorLevel 3 GoTo :EOF
If ErrorLevel 2 GoTo Pick
If ErrorLevel 1 GoTo Start
GoTo :EOF
:Start
For /F "Delims=" %%A In ('Where "%UserProfile%\Downloads":"????.jar"'
) Do (Set "FullName=%%~fA" & Set "Name=%%~nxA")
Start "" "%FullName%"
Del/Q "%SystemRoot%\Prefetch\JAVA*.pf" 2>Nul
Del/Q "%UserProfile%\Recent\%~nx0.lnk" 2>Nul
Del/Q "%UserProfile%\Recent\%Name%.lnk" 2>Nul
Del "%UserProfile%\Recent\Downloads.lnk" 2>Nul
Timeout -1
您甚至可以通过删除同一删除行中的多个快捷方式来缩短它。
您用于recent
的位置是实际上只链接到现代Windows版本中的真实位置,因此您可以将%UserProfile%\Recent
替换为%AppData%\Microsoft\Windows\Recent
。