【发布时间】:2013-12-28 14:48:22
【问题描述】:
我有一个包含用户信息的 CSV 文件。我正在尝试创建一个简单的批处理,允许任何人输入名称或名称的一部分或公司,如果找到结果,则很好地显示它。 csv 文件有四列:名称、公司、城市、州 name 列确实有逗号,但已经用双引号括起来了。
[myfile.csv]
Name,Company,City,State
"Smith, John",ACME,Buffalo,NY
"Doe, Jane",Disney,Orlando,FL
[/myfile.csv]
[searchcsv.bat]
@echo off
cls
setlocal enabledelayedexpansion
set CSVFILE=myfile.csv
:HOME
cls
set column=""
echo ---- USER SEARCH TOOL ----
echo ---- By: Dimitri ----
echo.
echo 1 Search By Name
echo 2 Search By Company
echo X Close
echo.
Choice /C 12X /N /M "Please make a selection: "
echo.
IF ERRORLEVEL 3 GOTO :EXIT
IF ERRORLEVEL 2 GOTO :SCHCOMP
IF ERRORLEVEL 1 GOTO :SCHNAME
:SCHNAME
set column=lname
echo ---- Enter Last Name ----
set /p strsearch=
cls
GOTO :FINDIT
:SCHCOMP
set column=Company
echo ---- Enter Company -----
set /p strsearch=
cls
GOTO :FINDIT
:FINDIT
for /f "skip=1 tokens=*" %%A in (%CSVFILE%) do (
set inline=%%A
for /f "tokens=1-5 delims=," %%1 in ("!inline!") do (
set lname=%%1&set fname=%%2&set comp=%%3&set cit=%%4&set stat=%%5
if %column% equ %strsearch% ( GOTO :SHOWRES ) ELSE ( GOTO :NFOUND )
)
)
:SHOWRES
echo Company: %comp%
echo Name: %lname%,%fname%
echo City: %cit%
echo State: %stat%
pause
GOTO :Home
:NFOUND
echo NOT FOUND Try AGAIN
pause
GOTO :HOME
[/searchcsv.bat]
我希望我可以按姓氏、名字进行搜索,但由于名字中的逗号,往往会把事情搞砸。
无论如何,希望有人能指出我做错了什么。感谢大家的帮助。
-迪米特里
【问题讨论】:
-
这绝对必须成批(即:作业)吗?还是可以使用 vbscript/powershell 脚本?
-
可以使用vbscript。我现在对 vb 脚本不太熟悉。 Powershell 在我们的环境中被阻止,所以它被淘汰了。
标签: batch-file csv