我需要一些幫助來移動檔案。
我正在嘗試創建一個批處理檔案,該檔案將調整影像大小并覆寫檔案較小的檔案。
調整大小部分不能將源和目標作為相同的檔案名,所以我想我可以設定一個臨時檔案夾并將其移回。
@echo off
set "source_folder=c:\src"
set "result_folder_1=c:\res1"
SET COPYCMD=/Y
:start
if exist %source_folder%\*.jpg (
TIMEOUT /T 2 >nul
for %%a in ("%source_folder%\*jpg") do (
call scale.bat -source "%%~fa" -target "%result_folder_1%\%%~nxa" -max-height 1000 -max-width 1000 -keep-ratio yes -force yes
TIMEOUT /T 5
echo /Y "%result_folder_1%\%%~nxa" "%%~a"
move /Y "%result_folder_1%\%%~nxa" "%%~a"
del "%%~fa"
)
)
goto start
上面調整了檔案的大小并將其放在 res 檔案夾中,然后移動完成,但我不知道檔案在哪里結束,至少它不應該在哪里。
這是 cmd 視窗的輸出,似乎移動/回聲是正確的(?)。
Waiting for 0 seconds, press a key to continue ...
/Y "c:\res1\details5.jpg" "c:\src\details5.jpg"
1 file(s) moved.
Waiting for 0 seconds, press a key to continue ...
/Y "c:\res1\details6.jpg" "c:\src\details6.jpg"
1 file(s) moved.
Waiting for 0 seconds, press a key to continue ...
/Y "c:\res1\details7.jpg" "c:\src\details7.jpg"
1 file(s) moved.
Waiting for 0 seconds, press a key to continue ...
/Y "c:\res1\details8.jpg" "c:\src\details8.jpg"
1 file(s) moved.
Waiting for 0 seconds, press a key to continue ...
/Y "c:\res1\details9.jpg" "c:\src\details9.jpg"
1 file(s) moved.
我在這里做錯了什么?
uj5u.com熱心網友回復:
此選項會將檔案放回原始目錄中,_scaled并在名稱中附加標簽,然后在原始檔案存在后將其洗掉。使用findstr我們將只關注沒有_scaled標簽的專案。
@echo off
set "source=C:\src"
:start
for /f "delims=" %%a in ('dir /b "%source%\*.jpg" ^| findstr /V /R "_scaled"') do (
call scale.bat -source "%source%\%%~nxa" -target "%source%\%%~na_scaled%%~xa" -max-height 1000 -max-width 1000 -keep-ratio yes -force yes
if exist "%source%\%%~na_scaled%%~xa" del /Q "%source%\%%~nxa"
)
(timeout /t 5)>nul && goto :start
這是未經測驗的,所以只需更新我的結果,顯然首先通過創建包含一些檔案的虛擬目錄并將源更改為它來進行一些質量檢查。
編輯,根據您的最后評論,如果這是一次運行并且您想保留原始名稱,那么您可以簡單地將它們移動到一個檔案夾中,進行轉換并讓它們回到源中。
@echo off
set "source=C:\src"
set "destination=C:\res1"
move /Y "%source%\*.jpg" "
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420403.html
標籤:
上一篇:==和EQU運算子之間的區別?
