将文件复制到名称以这些文件名的后3个字符开头的目录

时间:2019-05-07 15:08:11

标签: batch-file

我有一个文件夹,其文件名为:

xxx009.dcm
xxx010.dcm
xxx011.dcm 
.
.
.
xxx250.dcm

我要复制每个文件名以特定数字结尾的文件,并将其粘贴到包含相同数字的文件夹中,例如:

Copy xxx009.dcm to C:\Test\File9ab
Copy xxx010.dcm to C:\Test\File10ab
Copy xxx011.dcm to C:\Test\File11ab
.
.
.
Copy xxx250.dcm to C:\Test\File250ab

我是一个真正的初学者,需要创建一个批处理文件才能为我完成这项工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  1. 使用for迭代文件并使用~n modifier
  2. 使用substring s从字符串中获取最后3个位置(需要复制到常规变量中)
  3. 使用set /a通过从前面加1的值中减去1000来去除前导零。
  4. 如2. + 3.在代码块内完成,这也需要delayed expansion

:: Q:\Test\2019\05\07\SO_56025594.cmd
@Echo off&SetLocal EnableDelayedExpansion
Set "Source=A:\Test"
Set "Target=A:\Test\File"

for %%F in ("%Source%\*.dcm") do (
   Set "file=%%~nF"
   Set /A "No=1!file:~-3! -1000"
   if not exist "%Target%!No!ab" MD "%Target%!No!ab"
   copy "%%~F" "%Target%!No!ab"
)

运行上述批处理后的样本树:

> tree /F
A:.
└───test
    │   xxx009.dcm
    │   xxx010.dcm
    │   xxx011.dcm
    │
    ├───File10ab
    │       xxx010.dcm
    │
    ├───File11ab
    │       xxx011.dcm
    │
    └───File9ab
            xxx009.dcm