Windows批处理脚本以复制图像序列中的文件

时间:2015-03-28 06:14:06

标签: image batch-file sequence rename

我正在寻找一些帮助在Windows中创建批量重命名脚本

我有一个图像文件夹,按顺序编号为3,即

  • test_01.001.tif
  • test_01.004.tif
  • test_01.007.tif

等等

我的目标是复制并重命名每次两次,以便在它之后构成丢失的图像,以构成完整的图像序列,以便

test_01.001.tif被复制两次,这些副本重命名为:

test_01.002.tiftest_01.003.tif

等等图像序列的其余部分(最多200个)

非常感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:1)

试试这个:

@echo off
setlocal EnableDelayedExpansion

for /F "tokens=1-3 delims=." %%a in ('dir /B /A-D *.*.tif') do (
   set /A new1=1%%b+1, new2=new1+1
   copy "%%a.%%b.%%c" "%%a.!new1:~1!.%%c"
   copy "%%a.%%b.%%c" "%%a.!new2:~1!.%%c"
)

答案 1 :(得分:0)

未经测试

@echo off
pushd "C:\the_folder_with_the_images"

setlocal enableDelayedExpansion
for /l %%l in (1 ; 3 ; 201) do (
   set current_number=%%l
   set next_number=%%l+1
   set next_next_number=%%l+2
   if %%l lss 100 (
     set current_number=0%%l
   )
   if %%l lss 10 (
     set current_number=0%%l
   ) 

   if !next_number! lss 100 (
     set next_number=0%%l
   )
   if !next_number! lss 10 (
     set next_number=0%%l
   )

   if !next_next_number! lss 100 (
     set next_next_number=0%%l
   )
   if !next_next_number! lss 10 (
     set next_next_number=0%%l
   ) 
   copy test_01.!current_number!.tif test_01.!next_number!.tif
   copy test_01.!current_number!.tif test_01.!next_next_number!.tif
)

endlocal

答案 2 :(得分:0)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "basename=test_01."
FOR /l %%a IN (1001,3,1997) DO (
 SET /a filename=%%a
 IF EXIST "%sourcedir%\%basename%!filename:~-3!.tif" (
  SET /a new1=1+%%a
  SET /a new2=2+%%a
  ECHO(COPY /b "%sourcedir%\%basename%!filename:~-3!.tif" "%sourcedir%\%basename%!new1:~-3!.tif"
  ECHO(COPY /b "%sourcedir%\%basename%!filename:~-3!.tif" "%sourcedir%\%basename%!new2:~-3!.tif"
 ) else GOTO :EOF 
)
GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

为了测试目的,所需的COPY命令仅为ECHO在您确认命令正确后,将ECHO(COPY更改为COPY以实际复制文件。附加>nul以取消报告消息(例如1 file copied

该过程从1001到1997以3为步长变化%%a。如果找不到密钥名称部分为 %% a 的最后3位数的文件,则终止,否则将1和2添加到%%,提供两个必需的新文件,并使用相同的子串函数进行复制。

答案 3 :(得分:0)

另一种非常量身定制的方法可能是:

@echo off
setlocal enabledelayedexpansion    
set iter=1
set count=1

for %%i in (C:\TEST\*.tif) do (
set name=%%~dpni
pause     
    if %count%==%iter% (
        if !count! lss 10 (
        set /a count+=1
        copy "%%i" "!name:~0,-1!!count!%%~xi"
        set /a count+=1
        copy "%%i" "!name:~0,-1!!count!%%~xi"
        set /a count+=1
        )
        if !count! geq 10 if !count! lss 100 (
        set /a count+=1
        copy "%%i" "!name:~0,-2!!count!%%~xi"
        set /a count+=1
        copy "%%i" "!name:~0,-2!!count!%%~xi"
        set /a count+=1
        )
        if !count! geq 100 if !count! lss 1000 (
        set /a count+=1
        copy "%%i" "!name:~0,-3!!count!%%~xi"
        set /a count+=1
        copy "%%i" "!name:~0,-3!!count!%%~xi"
        set /a count+=1
        )

    ) else (
    set /a iter+=1
    )
)
pause

TEST路径更改为与*.tif文件相关的路径。