CMD 스크립트 - 이름이 end _0001.png인 파일 복사

CMD 스크립트 - 이름이 end _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-loop에서 경로를 편집할 수 있습니다.

첫 번째 루프에는 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\"

관련 정보