我正在尝试创建一个批处理文件,它将执行几个循环(使用ANSYS命令)。这里的问题是我需要根据当前循环更改ANSYS脚本中的数字(来自ANSYS的结果总是随着数字的增加 - results01.res,results02.res等)。所以在FIRST循环中我需要加载到ANSYS results01.res,在SECOND循环results02.res等中,但是当这个“加载”由ANSYS脚本完成时,我需要更改加载文件的数量。
我找到了一些替换txt文件中文本的技巧。其中最好的是这里引用的: http://www.dostips.com/DtCodeBatchFiles.php#Batch.FindAndReplace 问题是,当我想更改数字而不是单词时,这不起作用。这是我的批次:
@echo off
set /a "x=0"
set /a "y=1"
:do_while_loop_start
echo %x% loop
set /a "x=x+1"
echo %y%
set /a "y=y+1"
call rename.bat "results0%y%.res" "results0%x%.res changeNumber.txt>newfile.txt
IF %x%==20 (echo %x% equal to 20
) ELSE (
goto do_while_loop_start
)
:do_while_loop_end
答案 0 :(得分:1)
Desired output is to "rename" result01.res to result02.res
查看输出结果,如果没有问题,请移除echo
和^
:
@echo off &setlocal
set /a x=0
set /a y=1
:do_while_loop_start
echo %x% loop
set /a x=x+=1
echo %y%
set /a y=y+=1
echo call rename.bat results0%x%.res results0%y%.res changeNumber.txt^>newfile.txt
IF %x%==20 (echo %x% equal to 20
) ELSE (
goto do_while_loop_start
)
:do_while_loop_end
pause
答案 1 :(得分:0)
您必须注意,如果按升序进行重命名,则在结尾所有名称将重命名为姓氏。例如:
要解决此问题,必须按降序实现重命名。
另一方面,你应该累积前一个循环的重命名到下一个循环,否则最终结果与最后一个循环将被执行相同。您必须在每次循环后将新文件移动到原始文件中。
最后,当数字有2位数时,您的代码会出现问题。
@echo off
set /A x=120, y=121
:do_while_loop_start
echo Rename %x:~-2% to %y:~-2%
call rename.bat "results%x:~-2%.res" "results%y:~-2%.res" changeNumber.txt > newfile.txt
move /Y newfile.txt changeNumber.txt
set /A x-=1, y-=1
IF %x% gtr 100 goto do_while_loop_start
echo End of loop
:do_while_loop_end
在测试此程序之前,请务必备份原始的changeNumber.txt文件。