从文本文件中读取 - 批处理

12

我有一个文本文件a.txt:

Hello World
Good Afternoon

我编写了一个批处理脚本逐行读取此文件的内容:
FOR /F "tokens=* delims=" %%x in (a.txt) DO echo %%x

由于默认分隔符是空格,因此我得到的输出是"Hello" "World"。 如何覆盖此行为以获取输出"Hello World" "Good Afternoon"


3
您的代码解决了问题,您应该再次测试它。 - jeb
你的脚本对我有效。 - aphoria
不是的,它没有给出期望的输出。 它正在使用空格字符来换行。 - Tjs
是的,你说得对,它输出正确。 我正在将这些值传递给vbs文件。 在vbs文件中,当通过WScript.Arguments读取参数时,我遇到了这个问题。 - Tjs
如果你想要将echo作为一个参数传递,可以尝试使用echo "%%x" - rojo
我在传递参数到vbs文件时,使用双引号将参数括起来。问题解决了!! - Tjs
1个回答

7

如果您没有修改命令,那么您的代码 "for /f "tokens=* delims=" %%x in (a.txt) do echo %%x" 将在大多数Windows操作系统上运行。

所以你可以先 "cd" 到要读取的目录,然后再执行 "for /f" 命令来跟踪字符串。例如,如果文件 "a.txt" 位于 C:\documents and settings\%USERNAME%\desktop\a.txt ,则应该使用以下命令。

cd "C:\documents and settings\%USERNAME%\desktop"
for /f "tokens=* delims=" %%x in (a.txt) do echo %%x
echo.
echo.
echo.
pause >nul
exit

但是,如果由于某种原因,这在您的计算机上无法工作,则有一种更简单,更有效的方法来完成此操作。使用“type”命令。

@echo off
color a
cls
cd "C:\documents and settings\%USERNAME%\desktop"
type a.txt
echo.
echo.
pause >nul
exit

或者,如果您希望他们从批处理中选择要写入的文件,则可以执行以下操作。

@echo off
:A
color a
cls
echo Choose the file that you want to read.
echo.
echo.
tree
echo.
echo.
echo.
set file=
set /p file=File:
cls
echo Reading from %file%
echo.
type %file%
echo.
echo.
echo.
set re=
set /p re=Y/N?:
if %re%==Y goto :A
if %re%==y goto :A
exit

%USERNAME%参数将如何被赋值? - RGS

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