我目前正在努力让自己创建par2恢复文件更容易一些。以下脚本遍历所有当前文件夹的子文件夹,然后为所述子文件夹中的所有文件创建par2恢复文件。
FOR /R %%g IN (.) DO C:\WINDOWS\par2.exe c -r10 -s384000 "%%g\%%~ng.par2" "%%g\*"
del /q *.par2
pause
但是现在我有一个问题,它使用文件夹名称作为par2文件的文件名,但剥离了“扩展名”,就像它对文件一样。文件夹名称类似于“ConcertFootage1.avi_”。然后该文件夹将包含ConcertFootage1.avi.part01.rar和ConcertFootage1.avi.part02.rar等文件。含义我最终得到像“ConcertFootage1.par2”这样的par2文件,它应该是“ConcertFootage1.avi.par2”,以便正确匹配文件夹中的文件。
现在,即使它不从foldername剥离“扩展名”,我仍然会以“ConcertFootage1.avi_.par2”结束,所以我认为最好是文件夹中文件的名称,并以此为基础,这意味着它只会剥离“.partX.rar”文件扩展名,这正是我所需要的。
我无法弄清楚如何在“FOR DO”命令中执行此操作,任何人都可以帮忙吗?
答案 0 :(得分:2)
我理解你的问题,你试图从文件名中删除两个扩展名。
您可以使用两个%~nX
标记来执行此操作。
setlocal EnableDelayedExpansion
for /R %%g IN (.) DO (
set "filename=%%~g"
call :removeExtension result1 "!filename!"
call :removeExtension result2 "!result1!"
echo !filename! -- !result1! -- !result2!
)
exit /b
:removeExtension
set "%~1=%~n2"
exit /b