批处理 - 批处理中当前处理的文件的目录

时间:2016-10-11 21:39:19

标签: batch-file batch-processing

我正在尝试使用解包器来提取多个文件。我的脚本就像这样

for /R %%i in (*.ext) DO quickbms.exe -o script.bms "%%i" "%%~ni"

问题是当我从C:\archives删除文件时,它会将所有文件提取到该目录,包括C:\archives\dir1C:\archives\dir2etc.

中的存档

如何在不必手动启动每个文件夹中的脚本的情况下,在自己的文件夹中提取所有档案?

1 个答案:

答案 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(注意连续两次\\ 反向实体)。
幸运的是,批处理解释器将路径中的反斜率加倍\\(甚至是多次)作为单个\ 反向实体 ...