在 cmd 中使用匹配的通配符

Using the matched wildcards in cmd

我们可以访问通配符中匹配的字符吗?
我当前目录中有一些文件名为 Labx.pdsprj,我想根据它们将它们复制到同一目录中的子文件夹中文件名使得 "Lab3.pdsprj" 进入子文件夹 ".//subfolder_name//lab3" 作为 ".//subfolder_name//lab3//Lab3.pdsprj"

我正在尝试类似

copy Lab?.pdsprj .//subfolder_name//lab(something here to access the matched number)

没有必要只使用上面的命令,欢迎任何帮助。

如果您的要求是不区分文件名“Lab*”和子目录“lab”(如@dave_thompson_085 所示),这可能看起来过分了。虽然,该解决方案假定“lab*”子目录已经存在。我可以更改为执行此操作。

FOR %%A IN (Lab?.pdsprj) DO (
    MKDIR "%%~nA"
    COPY %%A .\subfolder\%%~nA\%%~nxA
)

如果一定要区分大小写,可以用这个。这将 运行 在 windows command-line batch-file 运行 下 cmd。如果您使用的是受支持的 Windows 系统,PowerShell 会随它一起安装在系统上。

powershell -NoLogo -NoProfile -File "C:\src\t\Do-CopyPdsprjFiles.ps1"

=== C:\src\t\Do-CopyPdsprjFiles.ps1

Get-ChildItem -File -Filter 'Lab*.pdsprj' |
    ForEach-Object {
        if ($_.Name -match 'Lab(\d+).pdsprj') {
            $LabNumber = $Matches[1]
            $LabDir = Join-Path -Path '.' -ChildPath "lab$($LabNumber)"
            if (-not (Test-Path -Path $LabDir)) { mkdir $Labdir | Out-Null }
            Copy-Item -Path $_.FullName -Destination $LabDir
        }
    }