批处理脚本移动和重命名文件

时间:2014-07-22 20:59:18

标签: batch-file scripting command-prompt

我有另一个问题,非常相似 Batch Scripting Moving files with timestamp但我遇到了问题。

我有一个文件系统C:\ Test \ Baseline - 在Baseline文件夹下我有很多文件夹,范围从1到10+这些都是图像文件。我想将那些仅以-not tasty.jpg文件结尾的文件夹中的所有图像复制到Baseline文件夹中,但删除了-not tasty.jpg部分。

这里有一个例子:左 C:\Test\Baseline: apple.jpg,orange.jpg,watermellow.jpg,strawberry.jpg,eggs.jpg
C:\Test\Baseline\07-14-14: apples-tasty.jpg,apples-not tasty.jpg,fruits-tasty.jpg,fruits-not tasty.jpg
C:\Test\Baseline\07-16-14: cherry-tasty.jpg,cherry-not tasty.jpg,orange-tasty.jpg,orange-not tasty.jpg

所以最后当我运行这个批处理脚本时,它应该采取07-14-14中的文件apple-not tasty.jpg和fruits-not tasty.jpg将它们重命名为-not tasty.jpg - > apple.jpg和fruits.jpg移动/复制到它的父目录C:\Test\Baseline并在必要时覆盖 - 也采取cherry-not tasty.jpg,orange-not tasty.jpg - > cherry.jpg,orange.jpg移动/复制到C:\Test\Baseline

所以我们留下了 C:\Test\Baseline: apple.jpg,orange.jpg,watermellow.jpg,strawberry.jpg,eggs.jpg,fruits.jpg,cherry.jpg

我希望你能理解这一点。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

希望这对你有用 -

@echo OFF

cd D:\test\baseline

for /f "delims=" %%i in ('dir /s /b "*-not tasty.*"') do copy /y "%%~fi" d:\test\baseline\* >nul 2>&1

for /f "delims=" %%i in ('dir /b "*-not tasty.*"') do CALL :rename "%%i" 
goto :EOF

:rename
set filename=%1
set newfilename=%filename:-not tasty=%
ren %filename% %newfilename% >nul 2>&1
if %errorlevel% EQU 1 del %newfilename% & ren %filename% %newfilename%

:EOF

干杯, ģ