如何增加变量名称的一部分?
EG。我想增加
filename包含mmddyyyy-prev01-Database.mdb
之类的内容
我正在尝试将其重命名为mmddyyyy-prev02-Database.mdb
使用代码
Setlocal EnableDelayedExpansion
set /a nextFileName=!fileName:~0,13!!fileName:~13!+1
我收到错误
Missing operator.
我正在使用它创建一个批处理子,它将递归重命名prevXX
项,以便最新的项始终为prev01
。我也在我的方法中定期setlocal
来防止变量在更深层的调用之间混淆
答案 0 :(得分:3)
我正在努力:
@ECHO OFF &SETLOCAL disableDelayedExpansion
FOR /f "delims=" %%x IN ('DIR /b /a-d /o-n *-prev*-Database.mdb') DO (
FOR /f "tokens=1-3*delims=v-" %%a IN ("%%~x") DO (
FOR /f "tokens=*delims=0" %%e IN ("0%%c") DO (
FOR /f %%f IN ('SET /a %%e+1') DO (
IF %%f LEQ 9 (
ECHO REN "%%~x" "%%~a-%%~bv0%%~f-%%~d"
) ELSE (
ECHO REN "%%~x" "%%~a-%%~bv%%~f-%%~d"
)
)
)
)
)
只需删除ECHO
即可使其正常运行。
答案 1 :(得分:2)
SET /A
不允许你这样做。
你必须分成两行,如下所示:
SET BaseFileName=!FileName:~0,13!
SET /A Counter=!FileName:~13!+1
然后,将这些碎片放回原处:
SET NextFileName=%BaseFileName%%Counter%-Database.mdb
注意:这不会处理您的潜在客户0
...您必须为此编写更多代码。
答案 2 :(得分:2)
...
set filename=mmddyyyy-prev01-Database.mdb
call :nextname
ren %filename% %newname%
...
:nextname
set /a newname=1%filename:~13,2%+1
set newname=%filename:~0,13%%newname:~-2%%filename:~15%
goto :eof
您是否使用ren %filename% %newname%
或ren !filename! !newname!
是一个上下文问题。您发布的代码不足以确定。如果我怀疑你正在循环中执行ren
,那么你需要!var!
形式和delayedexpansion(你看起来很熟悉)。在子程序:nextname
中,应该使用%var%
表格。
但请记住,您需要按反向字母顺序重命名现有文件,所以
mmddyyyy-prev03-Database.mdb becomes mmddyyyy-prev04-Database.mdb
mmddyyyy-prev02-Database.mdb becomes mmddyyyy-prev03-Database.mdb
mmddyyyy-prev01-Database.mdb becomes mmddyyyy-prev02-Database.mdb