首页 > 解决方案 > 如何循环文本文件的每一行以使用 Windows 批处理文件进行打印?

问题描述

我正在使用以下批处理脚本循环文本文件的每一行以打印它,但它唯一打印的是文本文件的名称。

@echo off
setlocal
SET ServerList="serversRDPok.txt"
FOR /F "eol=; tokens=*" %%a in (%ServerList%) DO (
    echo line=%%a
)
endlocal

标签: batch-file

解决方案


以下命令SET ServerList="serversRDPok.txt"定义了一个名为ServerListvalue的变量"serversRDPok.txt"。如果您查看For命令的用法信息,即for /?,您会注意到包含这些双引号意味着您正在使用此特定指令,FOR /F ["options"] %variable IN ("string") DO command. 它将您的双引号值视为字符串。您需要的是它被视为双引号文件名,而不是字符串。

为此,您需要合并UseBackQ说明。

@Echo Off
SetLocal EnableExtensions
Set ServerList="serversRDPok.txt"
For /F "UseBackQ Delims=" %%G In (%ServerList%) Do (
    Echo line=%%G
)

尽管您确实应该使用推荐的语法,,Set "VariableName=String Value"但此特定方法不包括双引号作为名称或值字符串的一部分。在整个脚本中,每当您需要对值进行双引号时,只需用双引号将变量名括起来即可。

@Echo Off
SetLocal EnableExtensions
Set "ServerList=serversRDPok.txt"
For /F "UseBackQ Delims=" %%G In ("%ServerList%") Do (
    Echo line=%%G
)

推荐阅读