CMD 脚本 - 复制名称以 _0001.png 结尾的文件

CMD 脚本 - 复制名称以 _0001.png 结尾的文件

我需要帮助在 cmd 中编写脚本

我在一个有子文件夹的文件夹中,你必须搜索这些子文件夹(不要深入)并将名称以“_0001.png”结尾的文件复制到文件夹!!_ TEMP(此文件夹位于程序启动的位置)

你能帮助我吗?

这不起作用:

for /R "%folder%" %%G in (*_0001.png) do copy "%%G" "%folder%\!!_TEMP\"

答案1

pushd "%folder%"
for /D %%D in (*) do copy "%%D\*_0001.png" "!!_TEMP"
popd

答案2

CMD 不是我的强项,所以我将提供我的 Powershell 解决方案。

$content = Get-ChildItem .\Desktop\localtmp -Depth 1
foreach($file in $content){
    if($file.Name -like "*_0001.png"){
    $path = $file.DirectoryName + "\" + $file.Name
        Copy-Item $path -Destination .\Desktop\anotherlocaltmp
    }
}

你只需要添加你的路径

希望能帮助到你!

答案3

这应该对你有用:

@echo off

set "dir=C:\Your\Root\Folder"
set "tem=%dir%\!!_Temp"

for /d %%A in (*) do (
    for %%B in (%%A\*_0001.png) do (
        if not exist "%tem%\%%~nxB" copy /y "%%B" "%tem%\" 
    )
)

为了使事情变得更清晰和更容易改变,我们设置了两个变量 - 一个用于你的根文件夹(dir),一个用于根目录内的!!_Temp文件夹(tem);这也根据您的问题假设您正在从根文件夹运行.bat 文件 - 如果不是这种情况,我们可以在第一个 for 循环中编辑路径。

第一个循环for /d仅查看当前目录中的顶级文件夹,并且在循环的每次迭代中,这些顶级文件夹都设置为参数%%A。下一个循环仅查看符合我们设置的条件的文件 - 即以%%A结尾的任何文件_0001.png- 并将每个文件设置为参数%%B。这个最后一个循环中的命令是if not exist "%tem%\%%~nxB" copy /y "%%B" "%tem%\"- 我们包括if not exist因此它不会在已经复制到的文件上运行!!_Temp。根据您的问题,我不确定您是否会遇到多个子文件夹中具有完全相同名称的多个文件,但如果这是潜在情况,我们可以解决这个问题。

答案4

这行 for 循环应该可以工作。它具有与您使用的变量相同的变量。

for /f "delims==" %%G in ('dir "%folder%\*_0001.png" /s /b') do copy "%%G" "%folder%\!!_TEMP\"

相关内容