Windows批处理:从文本文件设置变量

8

我目前正在寻找一种方法,可以从txt文件中的链接在Windows批处理文件中设置变量。

例如,如果文本文件如下:

http://website1.com
http://website2.com
http://website3.com

我希望能将它们输出到批处理的变量中。例如:
set var1="Line one of text file, ex: http://website1.com"
set var2="Line two of text file, ex :http://website2.com"
set var3="Line three of text file, ex: http://website3.com"

任何帮助都将不胜感激,提前致谢!

关于你的问题,我认为从批处理文件中解决会很困难。你考虑过使用PowerShell吗?这可能会更容易一些。你实际使用的操作系统/版本是什么? - forsvarir
目前只有Windows XP Pro。非常感谢任何建议。 :D - Dustin
3个回答

21

给你了!玩得开心。

(
set /p var1=
set /p var2=
set /p var3=
)<Filename.txt

让你获得相同的结果!


Mucho grande divertida - illusivetech

17

FOR /F 循环命令可用于从文本文件中读取行:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (sites.txt) do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
)
set var
你最终得到的是:

你最终得到:

var1=http://website1.com
var2=http://website2.com
var3=http://website3.com

嗨,Anders,如果我只想要网站地址作为输出怎么办?当前的输出是“var1=http://website1.com”,期望的输出是“http://website1.com”。 - Kamlendra Sharma

0

基于@Andres的答案,如果有人只想要变量的值作为输出:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (sites.txt) do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
)

for /L %%I in (1,1,%vidx%) do (
echo !var%%I!
)

Pause

输出:

http://website1.com
http://website2.com
http://website3.com

当然,如果你想进行一些文本操作,这种方法只有在这种情况下才有用。但如果您只想打印文本文件的内容,那么这并不是实用的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接