[英]Use data from a .csv file as input to choice command in batch file
我有一個簡單的批處理寫入 C:\Program Files (x86)\Data\ori.csv 文件以下信息:部門,發起人名稱
@echo off
CHOICE /C NS /M "Please Choose Division:"
echo.
if errorlevel 1 set division=A8-NN
if errorlevel 2 set division=A8-NS
:PROMPT
set /P ori= "Add %division% Originator? [(Y)=yes / (N)=No] "
IF /I "%ori%" NEQ "N" goto add (
) else (
goto exit
)
:add
set /p oriname= "Please Enter %division% Originator Name "
echo Division %division% Originator %oriname% has been Sucessfully added
echo %division%,%oriname% >>C:\%programfiles(x86)%\data\Ori.csv
echo.
goto prompt
:exit
pause
csv 的 output 是例如
A8-NN,Chris
A8-NN,Alfredo
A8-NS,Joe
A8-NN,Patrick
A8-NS,Ann
etc
this.csv 的數據將每 2 個月為部門更改一次(每個部門分配的新人員)
我的問題是我想在 ori.csv 文件中的單獨批處理文件中讀取數據,對於特定的部門,使用選擇命令選擇一個發起者
到目前為止,我已經這樣做了:
CHOICE /C NS /M "Please Choose Division:"
echo.
if errorlevel 1 set division=A8-NN
if errorlevel 2 set division=A8-NS
count=
for /f "tokens=1-20* delims=," %%a in ('type "C:\%programfiles(x86)%\data\Ori.csv"') do (
if %%a== ("%division%)
set b = %%b
set "count=!count!+1"
echo %count% %%b
)
)
我試圖做的是在 %count% 變量中存儲一個數字標識符,在 %b 變量中存儲發起者名稱。 如何使用這兩個變量作為選擇命令的輸入?
你需要一種稍微不同的方法。 在評論中進行了一些澄清之后.. 我建議你在這里set /p
,只是因為我們永遠不知道會有多少選項,你說最多 20 個,但明天突然有 27 個,然后呢? 所以我寧願安全也不要后悔:)
@echo off & set cnt=0
setlocal enabledelayedexpansion
for /f "usebackq tokens=1* delims=," %%a in ("%programfiles(x86)%\data\Ori.csv") do (
if not defined %%a (
set /a cnt+=1
set "%%a=%%a"
set "!cnt!=%%a"
echo !cnt!. %%a
)
)
set /p "oper=Please choose Division (1 to !cnt!): "
if not %oper% gtr !cnt! (
set cnt=0
for /f "usebackq tokens=1-20* delims=," %%a in ("%programfiles(x86)%\data\Ori.csv") do if "%%a" == "!%oper%!" set /a cnt+=1 & echo !cnt! %%b
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.