我想重命名一系列.jpg,但我想在文件名的末尾添加字符串。请帮助我如何解决这个问题,因为我是批处理文件编码的新手。
系列的jpg文件 - CurDt_S1,CurDt_S2,CurDt_S3等。直到S20。
我想将CurDt_S1替换为CurDt_1_S1 - CurDt_1_S1,CurDt_1_S2,CurDt_1_S3 uptill S20。
以下是我使用的代码 -
setlocal enabledelayedexpansion
set str=_1
for %%a in (CurDt_S*.jpg) do (
set oldName=%%a
set newName=oldname+str
call :Action
echo.
echo back in For loop
)
echo.
echo For loop completed
echo !oldName!
echo !newName!
endlocal
goto:eof
:Action
echo.
echo start of Action loop
echo !oldName!
echo !newName!
ren "!oldName!" "!newName!"
echo end of Action loop
谢谢, 斯纳
答案 0 :(得分:1)
for /L %%x in (1,1,20) do ECHO ren CurDt_S%%x.jpg CurDt_1_S%%x.jpg
应该适合你。
所需命令仅用于ECHO
以用于测试目的。在您确认命令正确无误后,将ECHO REN
更改为REN
以实际重命名文件。
答案 1 :(得分:0)
这是我能想到的最简单的方法:
@echo off
set i=1
for %%f in (CurDt_S*.jpg) do call :renameit "%%f"
goto done
:renameit
ren CurDt_S%i%.jpg CurDt_1_S%i%.jpg
set /A i+=1
:done
它假定批处理文件与jpg文件位于同一目录中。
希望这有帮助。
答案 2 :(得分:0)
for %%f in ("c:\somewhere\CurDt_*.jpg") do (
for /f "tokens=1,* delims=_" %%g in ("%%~nf") do echo ren "%%~ff" "%%~g_1_%%~h%%~xf"
)
对于每个指定的文件,使用第一个下划线作为分隔符拆分文件名以获取这两个部分,并将文件重命名为第一个标记+ _1_
+第二个标记+文件扩展名。
结果仅响应控制台。如果输出正确,请删除echo
命令以重命名文件。
答案 3 :(得分:0)
我使用以下代码重命名文件。基本上,它将如下 - CurDt_S1将重命名为CurDt_1_S1 uptill S20, CurDt_1_S1到CurDt_2_S1直到S20, CurDt_2_S1到CurDt_3_S1直到S20, CurDt_3_S1到CurDt_4_S1直到S20, 和CurDt_4_S1文件将存档到diff文件夹。
代码如下 -
设置i = 1 for %% f in(“C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_4_S * .jpg”)do call:currentdate4“%% f” for %% f in(“C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_3_S * .jpg”)执行调用:currentdate3“%% f” for %% f in(“C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_2_S * .jpg”)执行调用:currentdate2“%% f” for %% f in(“C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_1_S * .jpg”)执行调用:currentdate1“%% f” for %% f in(“C:\ Users \ 341256 \ Desktop \ test_batch_files \ CurDt_S * .jpg”)执行调用:currentdate“%% f” 转到 出口
:currentdate4
if exist C:\Users\341256\Desktop\test_batch_files\CurDt_4_S*.jpg (
rem move C:\Users\341256\Desktop\test_batch_files\CurDt_4_S*.jpg C:\Users\341256\Desktop\test_batch_files\Archive
echo moved current_date-4 files )
:currentdate3
if exist C:\Users\341256\Desktop\test_batch_files\CurDt_3_S*.jpg (
ren CurDt_3_S%i%.jpg CurDt_4_S%i%.jpg
echo renamed _3 to _4 )
:currentdate2
if exist C:\Users\341256\Desktop\test_batch_files\CurDt_2_S*.jpg (
ren CurDt_2_S%i%.jpg CurDt_3_S%i%.jpg
echo renamed _2 to _3 )
:currentdate1
if exist C:\Users\341256\Desktop\test_batch_files\CurDt_1_S*.jpg (
ren CurDt_1_S%i%.jpg CurDt_2_S%i%.jpg
echo renamed _1 to _2 )
:currentdate
if exist C:\Users\341256\Desktop\test_batch_files\CurDt_S*.jpg (
ren CurDt_S%i%.jpg CurDt_1_S%i%.jpg
echo renamed currdt to _1
echo complete )
set /A i+=1
:done
pause
请建议是否正确。
谢谢, 斯纳
答案 4 :(得分:0)
我终于找到了 SIMPLEST方式,以最简单的方式使用 BATCH来实现这一目标。
使用以下代码 -
del CurDt_5_S*
ren CurDt_4_S* CurDt_5_S*
ren CurDt_3_S* CurDt_4_S*
ren CurDt_2_S* CurDt_3_S*
ren CurDt_1_S* CurDt_2_S*
我测试了它和它的工作。 :) :) :))