我正在尝试使用解包器来提取多个文件。我的脚本就像这样
for /R %%i in (*.ext) DO quickbms.exe -o script.bms "%%i" "%%~ni"
问题是当我从C:\archives
删除文件时,它会将所有文件提取到该目录,包括C:\archives\dir1
,C:\archives\dir2
,etc.
如何在不必手动启动每个文件夹中的脚本的情况下,在自己的文件夹中提取所有档案?
答案 0 :(得分:1)
for /R %%i in (*.ext) DO quickbms.exe -o script.bms "%%~i" "%%~dpni"
请阅读for /?
:可以组合修饰符以获得复合结果。
按Command Line arguments (Parameters):
- ...
%~f1
将%1
展开为完全限定的路径名称 -C:\utils\MyFile.txt
%~d1
将%1
展开至仅限云列表信函 -C:
%~p1
仅将%1
展开到路径,例如\utils\
这包括一个尾随\
,它将被解释为转义字符 一些命令。%~n1
将%1
扩展为文件名,不带文件扩展名C:\utils\MyFile
,或者只显示路径(没有尾随) 反斜杠) - 该路径中的最后一个文件夹。- ...
"%%~pi\%%~ni"
会导致(就上述示例而言)\utils\\MyFile.txt
(注意连续两次\\
反向实体)。
幸运的是,批处理解释器将路径中的反斜率加倍\\
(甚至是多次)作为单个\
反向实体 ...