从输入文件中读取下面显示的值(FILE.txt)时出现问题。 < >符号导致不正确的阅读。我厌倦了使用^(转义字符,但它没有用,我也试过双引号(""),结果是同样混乱的输出。
无论如何,我可以使用<迭代读取文件的内容。 > =字符。 请帮忙
FILE.txt contains
A;Select * from TablenameA where time=>yesterdaytime and time<endtime;XXX;YYY
B;Select * from TablenameB where time=>yesterdaytime and time<endtime;AAA;YYY
C;Select * from TablenameC where time=>yesterdaytime and time<endtime;BBB;YYY
--------------SCRIPT----------------------------------
SET vFILENAME=FILE.txt
for /F "tokens=1,2,3,4 delims=;" %%i in (%vFILENAME%) do call :process "%%i" "%%j" "%%k" "%%l"
goto END
:process
set VAR1=%~1
set VAR2=%~2
set VAR3=%~3
set VAR4=%~4
echo %VAR1%
echo %VAR2%
echo %VAR3%
echo %VAR4%
----------------------SCRIPT-END----------------------
更新:从for循环删除的报价&#34;%vFILENAME%&#34;
问题更新:如果我想将输出重定向到不同的文件
,该怎么办?示例:
echo PrmOne=%VAR1%>Output.txt
echo PrmTWO=%VAR2%>>Output.txt
echo PrmTHREE=%VAR3%>>Output.txt
echo PrmFOUR=%VAR4%>>Output.txt
答案 0 :(得分:2)
您的代码有一些错误(除了引号问题):for /F
命令需要usebackq
选项,因为您将文件名括在引号中:
@echo off
SET vFILENAME=FILE.txt
for /F "usebackq tokens=1,2,3,4 delims=;" %%i in ("%vFILENAME%") do call :process "%%i" "%%j" "%%k" "%%l" < NUL
goto :EOF
:process
set "VAR1=%~1"
set "VAR2=%~2"
set "VAR3=%~3"
set "VAR4=%~4"
set /P "=%VAR1%" & echo/
set /P "=%VAR2%" & echo/
set /P "=%VAR3%" & echo/
set /P "=%VAR4%" & echo/
输出:
A
Select * from TablenameA where time=>yesterdaytime and time<endtime
XXX
YYY
B
Select * from TablenameB where time=>yesterdaytime and time<endtime
AAA
YYY
C
Select * from TablenameC where time=>yesterdaytime and time<endtime
BBB
YYY
答案 1 :(得分:0)
问题是由于参数中的双引号:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:os="URL">
该行应
for /?
FOR /F .. ("string")
否则字符串&#34; FILE.txt&#34;用作输入
更新后,评论&lt; &GT;符号用于间接回声需要然后用双引号