2012-05-25 46 views
1

我正在生成一個文本文件名中的使用外部文本文件

Name1 
Name2 
Name3 
etc... 

格式的列表,我想什麼做一個批處理文件創建一個批處理菜單創建一個菜單從文本文件中提取條目以創建選項。

所以

Menu 
1 Name1 
2 Name2 
etc... 

我確定與創建菜單本身,但它從文件中獲取數據,並指派給絆倒了我的變量。我看過FOR命令,但我想我的大腦只是沒有包裹它。有沒有人有任何代碼,做到了上述?

任何援助將不勝感激。

+0

對不起,沒注意預覽窗格。文本文件條目是每行一個。其中一些將在其中有空格,例如「Microsoft Office Document Image Writer」將作爲條目。 – user1418000

回答

1
@echo off 
setlocal EnableDelayedExpansion 
echo Menu 
set i=0 
for /F "delims=" %%a in (theTextFile.txt) do (
    set /A i+=1 
    set "name[!i!]=%%a" 
    echo !i! %%a 
) 
set lastOpt=%i% 
:getOption 
set /P "opt=Enter desired option: " 
if %opt% gtr %lastOpt% (
    echo Invalid option 
    goto getOption 
) 
echo Process !name[%opt%]! 

對於更詳細的解釋,審查this answer

0

如果生成由行的文本文件行的循環中,您可以在以下計數器添加到循環:

… 
SET /A cnt+=1 
… 

然後你可以在另一個循環中使用它,這個循環會以編號列表的形式輸出行:

… 
<YourFile.txt (
    FOR /L %%L IN (1,1,%cnt%) DO (
    SET /P line= 
    SETLOCAL EnableDelayedExpansion 
    ECHO %%L !line! 
    ENDLOCAL 
) 
) 

但是,如果你的文本文件作爲單個命令的輸出產生的(或者多個命令),你可以算算賬行是這樣的:

… 
FOR /F %%C IN ('FIND /C /V "" ^<YourFile.txt') DO SET cnt=%%C 
… 

然後你就可以使用同一個FOR /L環路以上顯示菜單。

+0

是的,但是,如何菜單的一個選項將作爲選和處理? – Aacini

+0

好像我忽略了*賦值給變量*問題的一部分。不知道我是否理解,但我希望你能做到。 :) –