我正在寻找一些帮助在Windows中创建批量重命名脚本
我有一个图像文件夹,按顺序编号为3,即
等等
我的目标是复制并重命名每次两次,以便在它之后构成丢失的图像,以构成完整的图像序列,以便
test_01.001.tif
被复制两次,这些副本重命名为:
test_01.002.tif
和test_01.003.tif
等等图像序列的其余部分(最多200个)
非常感谢任何帮助,谢谢!
答案 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
文件相关的路径。