Batch file 如何编写将文件移动到部分文件名与文件夹目标匹配的目录的批处理文件?

Batch file 如何编写将文件移动到部分文件名与文件夹目标匹配的目录的批处理文件?,batch-file,directory,match,move,Batch File,Directory,Match,Move,我有很多文件需要放在特定的文件夹中。所有文件名和所有需要保存它们的文件夹都有特定的模式。 如何使用以下规则编写批处理文件 c:\s1\u d1111\u c1\u p1.mpz需要移动到文件夹c:\SNC1111 c:\s1\U d2222\U c1\U p1.mpz需要移动到文件夹c:\SNC2222 文件名始终具有与文件夹对应的4位数字。s和c后面的数字总是1,p后面可以有任何整数 这是针对Windows Server 2008 R2标准的 谢谢你的帮助 使用Powershell 此示例将j

我有很多文件需要放在特定的文件夹中。所有文件名和所有需要保存它们的文件夹都有特定的模式。 如何使用以下规则编写批处理文件

  • c:\s1\u d1111\u c1\u p1.mpz需要移动到文件夹c:\SNC1111
  • c:\s1\U d2222\U c1\U p1.mpz需要移动到文件夹c:\SNC2222
  • 文件名始终具有与文件夹对应的4位数字。s和c后面的数字总是1,p后面可以有任何整数

    这是针对Windows Server 2008 R2标准的

    谢谢你的帮助

    使用Powershell 此示例将jdk中开始的文件移动到子文件夹jdk

    $files = Get-ChildItem -File
    for ($i=0; $i -lt $files.Count; $i++) {
        $outfile = $files[$i].Name
        if ($outfile.StartsWith("jdk")){
            mkdir -Path "jdk" -Force
            move  $files[$i].FullName "jdk"
        }
    }
    
    修改以匹配您的条件,并将代码粘贴到Powershell窗口中

     @echo off
    
        setlocal enableextensions
    
        set "source=c:\"
        set "targetBase=c:\SNC"
    
        for /d %%f in ("%source%\"
        ) do for %%a in ("%%~ffs1_d????_c1_p*.mpz"
        ) do for /f "tokens=2 delims=_d" %%b in ("%%~na"
        ) do echo move /y "%%~fa" "%targetBase%%%b\%%~nxa"
    
        endlocal
    
    • 用于%%f
      用于确保源路径始终具有结束反斜杠
    • 用于%%a
      用于从源枚举要处理的文件
    • 用于%%b
      用于将名称拆分为部分并执行移动
    move
    命令仅回显到控制台。如果输出正确,请删除回波
    echo