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\"