2013-10-04 14 views
0

可以說我有包括與短劃線分隔的多個值只有一條線,這樣一TXT文件:需要一個批次/ VBS讀取破折號分隔txt文件和輸出變量值

1000 -675 -76 -98 -10 

什麼我需要的是創建一個batch文件或vbs讀取TXT文件併爲每個值分配一個變量。輸出應該是這樣的:

variablename=1000 

variablename=675 

variablename=76 

variablename=98 

variablename=10 

有沒有辦法做到這一點?我感謝所有幫助....謝謝

+1

當你說「爲每個值分配一個變量?」時,你是什麼意思?你是否試圖在程序中設置環境或變量?你試過什麼了? –

+0

TXT文件上的每個值都應該分配給一個變量。每個變量應該有一個特定的名稱,例如: 蘋果= 1000 pinapples = 675 – Karsten

+2

蘋果不會從天而降!你只能有一個數組。 – Endoro

回答

0

好了,從一個批處理文件中讀取的多條信息中的.txt文件使用for /f循環:

set /p line=< Text file.txt 
for /f "tokens=1,2,3,4,5 delims=-" %%a in ("%line%") do (
set var1=%%a 
set var2=%%b 
set var3=%%c 
set var4=%%d 
set var5=%%e 
) 

等。請注意,這隻會解析第一行,(您需要了解您期望的數字)。告訴我你是否想要一個可解析的數字腳本。

蒙娜麗莎

+0

請注意,此解決方案最多隻能在一行中處理5個值。 –

1

在VBScript中,你可能會使用一個字典,用於存儲值:

Set fso = CreateObject("Scripting.FileSystemObject") 
Set vars = CreateObject("Scripting.Dictionary") 

i = 1 
For Each val In Split(fso.OpenTextFile("C:\path\to\your.txt").ReadAll, " -") 
    vars.Add "var" & i, Trim(val) 
    i = i + 1 
Next 

如果你想在字典元素的特定名稱,你可以在陣列中提供給他們:

Set fso = CreateObject("Scripting.FileSystemObject") 
Set vars = CreateObject("Scripting.Dictionary") 

names = Array("apples", "pineapples", ...) 

i = 0 
For Each val In Split(fso.OpenTextFile("C:\path\to\your.txt").ReadAll, " -") 
    vars.Add names(i), Trim(val) 
    i = i + 1 
Next 

當然,名稱的數量必須等於或大於值的數量,否則會出錯。

+1

對於第二種方法(鍵(或變量名稱),如var1,var2,...是不好的練習)+1;但.Split()應該使用「 - 」分隔符。 –

+0

固定。感謝您的提醒。至於變量名稱:我同意「編號」變量是一種可怕的方法,但OP沒有給我們太多的工作,所以這只是給他一個大致的想法。 –

0
@echo off&setlocal enabledelayedexpansion 
set /a inc=0 
for /f "delims=" %%i in (file.txt) do (
    set a=%%i 
    set a=!a:-=! 
    for %%j in (!a!) do (
     set V[!inc!]=%%j 
     set /a inc+=1 
    ) 
) 
for /l %%i in (0,1,%inc%-1) do echo !V[%%i]! 

這將根據需要抓取儘可能多的標記。

相關問題