我正在尝试编写批处理文件来复制大量文件。我希望能够获取该文件并根据其文件名将其移动到特定文件夹。
例如,我有一个像这样的目录结构:
我想要一个查找所有* .xyz文件的批处理文件,并将它们分别复制到文件夹,根据文件名。所以上面的文件最终会出现在以下目录中。
将File1.xyz复制到D:/ FolderA / File1 /File1.xyz
将File2.xyz复制到D:/ FolderA / File2 /File2.xyz
将File3.xyz复制到D:/ FolderB / File3 /File3.xyz
我知道这应该可以在批处理文件中使用FOR循环,但我不知道如何将文本替换为通配符并将其用作变量(因此我可以创建一个包含同名。)
答案 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