在命令行脚本中使用迭代变量来创建文件名

时间:2017-08-24 20:31:33

标签: batch-file command-line adb

我尝试使用批处理文件自动执行adb测试程序。每次运行文件后,都会生成.CloudData.txt。我想在该文件名前加上一个试号T1.CloudData.txt等。我制作了这个测试代码:

echo off
set /p loops="Enter a number of iterations: "
for /l %%i in (1,1,%loops%) do (
    set file=//scard//mytest//T%%i.CloudData.txt
    echo %file%
)

所以最终我可以有以下几点:

echo off
set /p loops="Enter a number of iterations: "
for /l %%i in (1,1,%loops%) do (
    rem Execute adb commands for test
    set file=//scard//mytest//T%%i.CloudData.txt
    adb shell mv /sdcard/mytest/.CloudData.txt file
)

但是测试返回,假设loops = 3,/sdcard/mytest/T3.CloudData.txt 3次。具体而言,loops中存储的数字将添加到%%i的位置。从我在以下帖子中读到的内容:bash script variable inside variable,我认为我应该使用一个数组,但如果有一天我必须运行测试的次数超过迭代次数,这是不切实际的。阵列许可。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要delayed expansion

echo off
setlocal enabledelayedexpansion
set /p loops="Enter a number of iterations: "
for /l %%i in (1,1,%loops%) do (
    rem Execute adb commands for test
    set file=//scard//mytest//T%%i.CloudData.txt
    adb shell mv /sdcard/mytest/.CloudData.txt !file!
)

%%i的原因似乎是3三次(它不是')是变量%file%,它是从上一次运行的脚本中留下的