我有一个需要查看csv的批处理文件,并根据一个唯一的字符串找到一行,这是一个字母和数字的可变混合,应该由用户输入(很可能是由条形码扫描)
当前的csv设置如下:
学校,computerid,型号,序列,用户,访问
这些是标题,而不是实际数据。要搜索的变量是WorkstationID
。任何建议都非常感谢。
我的整个代码如下:
@echo off
setlocal enabledelayedexpansion
Echo What is the students computer name?
set /p computerid=
findstr /i "%computerid%" "AccessElevations.csv" > %temp%\computer.txt
pause
FOR /F "tokens=1-6 delims=," %%a in (%temp%\computer.txt) DO (
set school=%%a
set Model=%%c
set Serial=%%d
set user=%%e
set access=%%f
谢谢,
托比
答案 0 :(得分:0)
已编辑 - 要适应评论
@echo off
setlocal enableextensions disabledelayedexpansion
set "inputFile=AccessElevations.csv"
set "computerID="
set /p "computerID=What is the students computer name? "
if not "%computerID%"=="" for /f "tokens=1-6 delims=," %%a in (
'findstr.exe /i /r /c:"^[^,]*,%computerID%," "%inputFile%"'
) do (
set "school=%%a"
set "model=%%c"
set "serial=%%d"
set "user=%%e"
set "access=%%f"
)
echo school : %school%
echo model : %model%
echo serial : %serial%
echo user : %user%
echo access : %access%
rem clean
endlocal
如果提供了computerID,findstr
用于在指定文件的第二个字段(跳过第一个逗号,然后是计算机ID,然后是逗号)中找到此计算机ID。如果找到一行,for
命令将使用逗号作为分隔符将其拆分。
答案 1 :(得分:0)
如果此deosn不帮助,请解释您遇到的问题以及错误消息。
@echo off
setlocal enabledelayedexpansion
Echo What is the students computer name?
set /p computerid=
findstr /i "%computerid%" "AccessElevations.csv" > "%temp%\computer.txt"
pause
FOR /F "usebackq tokens=1-6 delims=," %%a in ("%temp%\computer.txt") DO (
set school=%%a
set Model=%%c
set Serial=%%d
set user=%%e
set access=%%f
)
答案 2 :(得分:0)
我最终能解决这个问题,谢谢大家的帮助。我通过将accessselevations.csv文件的格式更改为.txt来修复它。