2017-08-24 102 views
-2

我正在嘗試使用批處理文件自動執行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,我想我應該使用一個數組,但是如果有一天我必須運行測試的次數超過迭代次數而不是數組允許的話,這是不切實際的。我應該如何繼續?

+0

只需注意:這不是PowerShell,而是實際的Command Shell。你應該編輯你的標題和標籤,將你的問題提交給合適的人! –

+0

謝謝!抱歉給你帶來不便。 – alwaysthestudent

+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%,這是從你的腳本上次運行留下

+0

非常感謝!如果你不介意,你能解釋一下調用'!file !'與調用'%file%'有什麼不同嗎? – alwaysthestudent

+0

@alwaysthestudent請閱讀第一個批次問題[delayedexpansion](https://ss64.com/nt/delayedexpansion.html)最艱苦的研究工作將揭示這一點。 – LotPings

+0

感謝資源,它很有啓發性;我很抱歉浪費你的時間。 – alwaysthestudent

相關問題