Batch file 需要批处理/vbs读取破折号分隔的txt文件并输出变量值

Batch file 需要批处理/vbs读取破折号分隔的txt文件并输出变量值,batch-file,vbscript,Batch File,Vbscript,假设我有一个TXT文件,其中只包含一行,多个值用破折号分隔,如下所示: 1000 -675 -76 -98 -10 variablename=1000 variablename=675 variablename=76 variablename=98 variablename=10 我需要的是创建一个batch文件或vbs,读取TXT文件并为每个值分配一个变量。输出应如下所示: 1000 -675 -76 -98 -10 variablename=1000 variablename

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

1000 -675 -76 -98 -10
variablename=1000

variablename=675

variablename=76

variablename=98

variablename=10
我需要的是创建一个
batch
文件或
vbs
,读取
TXT
文件并为每个值分配一个变量。输出应如下所示:

1000 -675 -76 -98 -10
variablename=1000

variablename=675

variablename=76

variablename=98

variablename=10

有没有办法做到这一点??非常感谢您的帮助……谢谢

好的,要从批处理文件中读取.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
)
set/p line=
等等。注意,这将只解析第一行(您需要了解预期的数字数量)。告诉我,如果你想要一个可以解析和计算数字数量的恶意脚本


Mona

在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
当然,名称的数量必须等于或大于值的数量,否则会出现错误

@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]!

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

当您说“为每个值分配一个变量”是什么意思?您是在尝试设置环境还是在程序中设置变量?到目前为止,您尝试了什么?TXT文件中的每个值都应该分配给一个变量。每个变量都应该有一个特定的名称,例如:apples=1000 pinapples=675苹果不会从天而降!您只能有一个数组。@Karsten从哪里可以得到变量名列表?否则,变量名必须是连续的。Var1、Var2、Var3……注意,此解决方案在一行中最多只适用于5个值。+1用于第二种方法(键(或变量名),如Var1、Var2……是不好的做法);但是.Split()应该使用“-”分隔符。谢谢你的提醒。至于变量名:我同意“编号”变量是一种糟糕的方法,但是OP没有给我们太多的工作,所以这只是给他一个大概的想法。