簡體   English   中英

使用來自 a.csv 文件的數據作為批處理文件中選擇命令的輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM