如果我正確理解了您的文件夾結構,下面的內容將起作用。就像這樣:
- 學生\名1 \ class1的
- 。 。 。 。 。 。 。 \ \。 。 。 。 。 。 \ class2
- 。 。 。
- students \ name2 \ class1
- 。 。 。 。 。 。 。 \ \。 。 。 。 。 。 \ class2
。 。 。,並且classes.txt位於名稱文件夾中,而grade.txt文件位於每個類文件夾中。
@echo off
set /p studentname="Enter student name: "
set studentpath=C:\school\students\%studentname%
For /f %%G in (%studentpath%\classes.txt) do (
For /f %%i in (%studentpath%\%%G\grade.txt) do (
echo %studentname% got %%i in %%G
)
)
pause
您需要設置正確的studentpath
。
外循環從classes.txt中讀取一個類,並將值(類名)賦值給%% G。然後內部循環運行以獲得該類的等級,該等級被分配給%% i。結果得到迴應,我們回到下一課的外部循環。這可以避免在for循環中設置任何變量,而只是使用參數%% G和%% i作爲輸出,從而避免DelayedExpansion(explained here)的問題。
請注意,此嵌套循環設置僅適用,因爲內部循環只需循環一次 - 從grade.txt中爲單個類獲取單一等級。
使用「嵌套循環,對於外部循環的每次迭代全部迭代的內部執行」。 [@MCND]。因此,例如,如果grade.txt包含兩個類的等級,則每個類都在單獨的行上,如下所示:
。 a
。b
結果將是:
。學生名字得到了一個數學
。學生名字在數學中得到b
。學生名字有英文
。學生名字得到b英文
上面的答案沒有用,但是你的原始響應與嵌套for循環一起工作得很完美。再次感謝@sjoy如果你可以加回來,那會很棒。 – TonyStark 2014-12-07 21:49:19
行@TonyStark。回到以前的答案。驚訝的讀取文件的set/p方法沒有工作,因爲我測試了一切,但很好,這就是你所需要的。 – sjoy 2014-12-07 22:38:34