将通配符的内容称为批处理文件中的变量

时间:2012-02-14 22:08:38

标签: batch-file

我正在尝试编写批处理文件来复制大量文件。我希望能够获取该文件并根据其文件名将其移动到特定文件夹。

例如,我有一个像这样的目录结构:

  • C:/
    • FolderA
      • File1.xyz
      • File2.xyz
    • FolderB中
      • File3.xyz

我想要一个查找所有* .xyz文件的批处理文件,并将它们分别复制到文件夹,根据文件名。所以上面的文件最终会出现在以下目录中。

将File1.xyz复制到D:/ FolderA / File1 /File1.xyz

将File2.xyz复制到D:/ FolderA / File2 /File2.xyz

将File3.xyz复制到D:/ FolderB / File3 /File3.xyz

我知道这应该可以在批处理文件中使用FOR循环,但我不知道如何将文本替换为通配符并将其用作变量(因此我可以创建一个包含同名。)

1 个答案:

答案 0 :(得分:1)

for /R C:\ %%f in (*.xyz) do (
   if not exist D:%%~Pf%%~Nf md D:%%~Pf%%~Nf
   copy %%f D:%%~Pf%%~Nf/%%~NXf
)

FOR变量修饰符提供您需要的信息:

%%~D Expands to a Drive letter only.
%%~P Expands to a Path only, including an ending backslash.
%%~N Expands to the Name only.
%%~X Expands to the eXtension only.

输入FOR /?有关详细信息。

也许你需要首先复制目录结构:

XCOPY C:\ D:\ /T