想請教 bat 指令 每個資料夾內指定檔名檔案複製並原地貼上後更名 的方法?

在google上找到的指令碼嘗試執行後 目錄下所有子資料夾內 含 xxx sheet 0724.txt 名的檔案成功的複製了一份並改名成 xxx sheet 0725.txt 但是 改成 複製xxx sheet 0724.xls 的檔案後 複製完的檔案改名會變成
xxx sheet 0724.xlsheet 0725.xls 會把*萬用符裡的檔名也加進去了 請問要怎麼修改會比較好 我只想將複製完的檔案做字尾的日期改名而已~
求求高手解答~

@echo off
setlocal
set "source_folder=%~dp0"

for /d %%a in ("%source_folder%\*") do (
if exist "%%a\*sheet 0724.txt" (
copy "%%a\*sheet 0724.txt" "%%a\*sheet 0725.txt"

)
)

echo 完成!
pause
endlocal
2025-07-26 3:06 發佈
AI改的

@echo off
setlocal enabledelayedexpansion
set "source_folder=%~dp0"

for /d %%a in ("%source_folder%\*") do (
for %%f in ("%%a\*sheet 0724.xlsx") do (
if exist "%%f" (
set "full_filename=%%~nxf"
set "new_filename=!full_filename:sheet 0724=sheet 0725!"
copy "%%f" "%%a\!new_filename!"
)
)
)

echo 完成!
pause
endlocal
kl9530203
kl9530203 樓主

謝謝高手大大解答~ 想請教有辦法可以加上指令 子目錄下排除 含2023年 2024年指定名稱的資料夾 不執行此複製動作的方法?

2025-07-26 19:56
kl9530203 wrote:
...改成 複製xxx sheet 0724.xls 的檔案後 複製完的檔案改名會變成
xxx sheet 0724.xlsheet 0725.xls 會把*萬用符裡的檔名也加進去了

Windows 的 copy 指令,在處理多個來源檔案或使用萬用字元時,目的地不能再使用萬用字元
若目標用 *,Windows 並不一定「正確的、聰明的」替你重命名。
@echo off
setlocal EnableDelayedExpansion
set "source_folder=%~dp0"

for /f "delims=" %%a in ('dir /s /b "%source_folder%*sheet 0724.xls"') do (
set src_name=%%~nxa
REM 手動改指定日期
set dst_name=!src_name:0724=0725!
copy "%%~a" "%%~dpa!dst_name!"
)

echo 完成!
pause
endlocal
kl9530203
kl9530203 樓主

謝謝高手大大解答~ 想請教有辦法可以加上指令 子目錄下排除 含2023年 2024年指定名稱的資料夾 不執行此複製動作的方法?

2025-07-26 19:56
Jackboy001

kl9530203 看不太懂,可以直接舉例嗎?

2025-08-03 4:23
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?