需要批处理/ vbs来读取以短划线分隔的文本文件并输出变量值

时间:2013-10-04 23:03:18

标签: batch-file vbscript

假设我有一个TXT文件,其中只包含一行,其中多个值用短划线分隔,如下所示:

1000 -675 -76 -98 -10

我需要创建一个batch文件或vbs来读取TXT文件并为每个值分配一个变量。输出应该是这样的:

variablename=1000

variablename=675

variablename=76

variablename=98

variablename=10

有没有办法做到这一点?我感谢任何帮助....谢谢

3 个答案:

答案 0 :(得分: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 :(得分: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
)

等等。请注意,这只会解析第一行,(您需要了解您期望的数量)。如果你想要一个可以解析的可编辑脚本和数量,请告诉我。

莫纳

答案 2 :(得分: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]!

这将根据需要获取尽可能多的令牌。