2017-06-15 41 views
2

如果此條件爲真,則需要基於給定輸入(例如33355 = ID)使用批量搜索CSV文檔,然後將行數據存儲到變量中。 (Mike = Name)和(C:\ Name \ 222 = path)。BATCH:根據標識符搜索CSV,然後將行存儲到變量中

到目前爲止,我已經設法將CSV的每一行存儲到變量(var0-var999)中。 For循環遍歷電子表格中的每一行併爲每行分配一個變量,例如%VAR1%...%VARN%。給定行號碼例如VAR2,將其分離爲變量(A,B,C),但我堅持如何基於標識符實現CSV搜索功能。

以下屏幕截圖是包含在我的電子表格中的一個小例子。最多有三列,大約有1500行。第一列將包含人員的ID,第二列將是名稱,第三列將是本地文件夾的路徑。

Excel

CSV目錄

ID,Name,Path 
9353,Lol,C:\Name\lol 
33355,222,C:\Name\222 
5533,ABC,C:\Name\ABC 

批處理腳本

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set test=0 
for /F "tokens=*" %%A in (C:\Users\COMMON\Desktop\test\test.csv) do (
    SET /A test=!test! + 1 
    set var!test!=%%A 
) 
set var 
REM set list=%VAR2% 

FOR /f "tokens=1-3 delims=," %%a IN ("%VAR2%") DO (
    set a=%%a 
    set b=%%b 
    set c=%%c 
) 

ECHO %c% 

PAUSE 

Command

我現在面臨的第二個challange是我主要的Excel表格包含了超過1000條記錄。使用批處理腳本,我可以看到存儲999個變量後停止執行。根據輸出結果,我不認爲將每行分析並存儲到變量中是執行我的要求的最有效方式。

我感謝您的意見和反饋,並等待您的回覆。

非常感謝!

宣言

+1

我們需要在運行的電子表格中看到CSV內容,而不是文件的外觀。我們需要確切地知道你想要以什麼形式輸出。我也希望在你發佈的腳本中對變量'%VAR2%'進行解釋。不要將該信息添加到評論或答案中,請使用編輯工具更新您的初始問題。 – Compo

回答

1

這樣的事情就可以做到。注意我爲這個例子設置了目標ID作爲一個固定值;我也在你的問題中假設了CSV文件。在實踐中,你可能會提供該id作爲一個.bat文件參數。

@echo off& setlocal 

set id=33355 

for /f "tokens=*" %%a in (test.csv) do (
    for /f "tokens=1-3 delims=," %%b in ("%%a") do (
     if %%b==%id% set name=%%c & set pth=%%d 
) 
) 

echo id=%id%, name=%name%, pth=%pth% 
pause 
+0

絕對的傳說!謝謝大家,感謝您的幫助和支持! – Manifesto

相關問題