2017-08-03 40 views
0

感謝您關注我的問題。批處理腳本讀取目錄中的文件名並要求用戶選擇一個

我在給定的目錄中有五個配置文件。在我的批處理腳本中,我想讀取這些文件名並將其提示給用戶。一旦用戶選擇了一個配置文件,從它讀取變量。

任何人都可以幫我在這裏的一些邏輯。所以,我可以繼續前進。

謝謝。

+0

請參閱[本頁](https://stackoverflow.com/q/15885132/1683264)。如果您更願意在控制檯中保留選項,您可能也對[此類菜單]感興趣(https://stackoverflow.com/a/34983868/1683264)。用'for'循環填充菜單[]'數組。 (* .config)do(set「menu [!idx!] = %%〜nxI」&& set/a idx + = 1)的'setlocal enabledelayedexpansion'和'set「idx = 0」 '建立一個匹配* .config – rojo

+0

的所有文件的菜單向我們顯示您的代碼? – lit

回答

1

這樣的批處理文件或.cmd這樣的文件演示了菜單技術(沒什麼奇怪的,用戶必須準確輸入文件名)。關鍵項目:

FOR 
SET /P 
IF EXIST 

祝你好運!

@echo off 

REM Show the user the list and ask them which one to use 
echo. 
echo Please select one of: 
echo. 
for %%F in ("D:\A Given Directory\*.config") do echo  %%~nxF 
echo. 
set SEL_CFGFNM= 
set /P SEL_CFGFNM=Which configuration file: 

REM Make sure they answered, and that the file exists 
if "%SEL_CFGFNM%" == "" goto ENDIT 
if NOT EXIST "D:\A Given Directory\%SEL_CFGFNM%" goto NOCFG 

REM User has selected file "D:\A Given Directory\%SEL_CFGFNM%" and it exists 
REM Do whatever you want to do with that file now 

REM Don't fall through the exit messages 
goto ENDIT 

REM Exit Messages 
:NOCFG 
echo. 
echo ERROR: Configuration file "%SEL_CFGFNM%" is not on the list 
echo. 
goto ENDIT 

REM Cleanup 
:ENDIT 
set SEL_CFGFNM= 
+0

謝謝史蒂文。 現在我已經提出修改了, 擴展名的文件不應該出現在提示符下,並且 用戶不應該輸入所有的文件名。他必須選擇1,2等選項。 非常感謝您的寶貴意見。 –

+0

你是多麼歡迎。從'FOR'循環的'%%〜nxF'部分放下「x」以擺脫文件擴展名;同樣,在引用文件名時將其添加回來。 –

相關問題