0

有人可以帮我解决我的问题吗?

我正在尝试制作一个批处理文件,它将执行几个循环(使用 ANSYS 命令)。这里的问题是我需要根据当前循环更改 ANSYS 脚本中的数字(来自 ANSYS 的结果总是随着数字增加 - results01.res、results02.res 等)。所以在第一个循环中我需要加载到 ANSYS results01.res,在第二个循环中 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
4

2 回答 2

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
于 2013-06-08T22:22:21.417 回答
0

您必须注意,如果您按升序重命名,最后所有名称都将重命名为姓氏。例如:

  • 第一个循环:result01.res -> result02.res
  • 第二个循环:之前重命名的 result02.res 和其他 result02.res -> result03.res
  • 第三个循环:所有result03.res重命名为result04.res
  • ETC...
  • 在最后一个循环中:所有以前重命名的名称 -> result20.res

为了解决这个问题,重命名必须按降序进行。

另一方面,您应该将前一个循环的重命名累积到下一个循环中,否则最终结果与仅执行最后一个循环相同。每次循环后,您必须将新文件移动到原始文件中。

最后,当号码有 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 文件。

于 2013-06-09T00:43:51.440 回答