回答
@echo off
setlocal
set /P "numbers="<csvfile
for %%I in (%numbers%) do (
echo %%I
)
不帶開關的for
命令使用逗號,分號,空格和製表符作爲分隔符。在上面的例子中,%%I
將依次是從左到右的每個數字。
@echo off
setlocal enableextensions enabledelayedexpansion
rem Variable to hold digits while reading numbers
set "number="
rem Variable to hold the table index where data is captured
set "n=0"
rem Decompose input file in characters and filter
for /f %%a in ('
cmd /q /u /c "type numbers.txt&echo(," ^| more ^| findstr /r /x /c:"[0-9,]"
') do if "%%a"=="," (
rem If a comma is found, capture current number
if defined number set /a "numbers[!n!]=!number!", "n+=1"
set "number="
) else (
rem If it is not a comma, is a number to concatenate to current one
set "number=!number!%%a"
)
rem Show numbers captured
set numbers[
這將「捕獲」每個值到數組的元素。由於全部數據必須通過for
命令加載到內存中,並且輸入文件中的每個有效字符都將包含CRLF結尾,輸入行中的限制約爲715 MB。
'+ 1'我經常忘記這個unicode技巧。這很好,但如果處理一個大的數據集,它會很慢。 – dbenham 2015-02-09 19:59:30
rojo爲相對較小的數據集顯示了一個很好的解決方案。
MC ND爲大數據集顯示了一個很好的純批處理解決方案,除非它可能變得非常慢。
大型數據集的一個很好的快速解決方案需要使用非純批處理。其中一個選項是我的JREPL.BAT utility,這是一個混合的JScript /批處理腳本,可以對文本執行正則表達式替換。
假設JREPL.BAT某處在您的PATH,和你的CSV是「test.csv」,那麼下面會打印出每個數字,每行一個:
jrepl "," "\n" /x /f "test.csv"
由於JREPL是一個批處理腳本如果您想在另一個批處理腳本中使用它,則必須使用CALL JREPL
。
下面顯示瞭如何將數字存儲在變量的「數組」中,使用FINDSTR建立數組索引。請注意,我不需要call jrepl
因爲jrepl是一種在(「」)中使用的條款:
@echo off
setlocal enableDelayedExpansion
:: Store the numbers in an array
for /f "tokens=1,2 delims=:" %%A in (
'jrepl "," "\n" /x /f "test.csv" ^| findstr /n "^"'
) do (
set "n[%%A]=%%B"
set "n.count=%%A"
)
:: Display the numbers
for /l %%N in (1 1 %n.count%) do echo !n[%%N]!
或者你可以使用JREPL解析出號碼,並建立索引值。這需要更多的代碼,但效率更高:
@echo off
setlocal enableDelayedExpansion
:: Store the numbers in an array
for /f "tokens=1,2 delims=:" %%A in (
'jrepl "\d+" "(n+=1)+':'+$0" /jmatch /jbeg "var n=0" /f "test.csv"'
) do (
set "n[%%A]=%%B"
set "n.count=%%A"
)
:: Display the numbers
for /l %%N in (1 1 %n.count%) do echo !n[%%N]!
- 1. 使用php從文本文件中讀取逗號分隔值
- 2. C#閱讀從逗號分隔文本文件到Windows窗體
- 3. 如何讀取以逗號分隔的.txt文件?
- 4. C++如何讀取文件,數值以逗號分隔
- 5. 如何在bash中用逗號分隔整數讀取文件
- 6. 如何在Windows批處理文件中嵌入文本文件
- 7. 如何從冒號(:)讀取C#中的分隔文本文件
- 8. 如何在PIG中讀取以分號分隔的CSV文件
- 9. 如何將行號添加到批處理文件中的文本文件(Windows)
- 10. 逗號分隔文件是如何工作的? ...如果文本中有逗號
- 11. 批次:轉換管分隔的文本文件,以逗號分隔的CSV文件
- 12. 在python中讀取逗號分隔的ini文件?
- 13. 將逗號分隔的字符串輸出爲多行文本文件的批處理文件
- 14. 從Windows批處理腳本中的文件中讀取值
- 15. 如何在逗號分隔文件中插入逗號
- 16. 如何在逗號分隔文件中顯示逗號
- 17. 閱讀逗號分隔文本文件到數組
- 18. 在動態ax中讀取逗號分隔值(csv)文件
- 19. 如何從Windows批處理文件編輯文本文件?
- 20. 使用等號和分號讀取批處理文件參數
- 21. 如何讀寫逗號分隔的文本值到文件中VB 6.0
- 22. 如何從文本文件中將逗號分隔的雙精度讀入MATLAB?
- 23. 從逗號或製表符分隔的文本文件中讀取
- 24. 批處理文件讀取和修改文本文件
- 25. 寫入以逗號分隔的文本文件
- 26. 如何使用Windows批處理文件從文本文件中提取數字?
- 27. 將逗號分隔的文件讀取到整數數組中
- 28. 從逗號分隔的數據文件中讀取列C++
- 29. Windows批處理文件讀取文本文件並全部轉換爲大寫
- 30. 讀取存儲在csv文件中的rgb值,用逗號分隔符分隔
這可能會回答你的問題:http://stackoverflow.com/questions/134001/how-can-i-load-the-contents-of -a-text-file-into-a-batch-file-variable – Kevin 2015-02-09 18:22:43
是的,但它是與一個固定的文件 – 2015-02-09 18:26:33
在我的情況下,「數字」的數量可能會有所不同 – 2015-02-09 18:27:05