我需要幫助在 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\"