Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 文本文件的第一行在批处理中变为变量_Batch File_Set_Echo_Var - Fatal编程技术网

Batch file 文本文件的第一行在批处理中变为变量

Batch file 文本文件的第一行在批处理中变为变量,batch-file,set,echo,var,Batch File,Set,Echo,Var,我试图提取.txt文件的第一行,并将其分配给循环内部的变量。我的变量分配不正确。它一直显示“回声关闭”。但是,当循环返回时,即使是相同的代码,它也会正确显示。我怎样才能让它第一次显示我想要的文本 代码: 每当在附加代码块中设置变量时,如果要在同一代码块中检索该变量,则必须采用延迟扩展样式。例如: set "test=apples" ( set "test=oranges" echo %test% ) 。。。将回显“apples”,因为这是到达代码块时test变量的值。另一方面,

我试图提取.txt文件的第一行,并将其分配给循环内部的变量。我的变量分配不正确。它一直显示“回声关闭”。但是,当循环返回时,即使是相同的代码,它也会正确显示。我怎样才能让它第一次显示我想要的文本

代码:


每当
在附加代码块中设置变量时,如果要在同一代码块中检索该变量,则必须采用延迟扩展样式。例如:

set "test=apples"
(
    set "test=oranges"
    echo %test%
)
。。。将回显“apples”,因为这是到达代码块时
test
变量的值。另一方面,

set "test=apples"
(
    set "test=oranges"
    setlocal enabledelayedexpansion
    echo %test% and !test!
    endlocal
)
将呼应“苹果和橙子”,因为扩展了
!测试延迟,而
%test%
未延迟。有关详细信息,请在控制台窗口中,
setlocal/?

现在,将这些知识应用到代码中

@Echo off
setlocal

:ReadLoop
if exist "<Full\Path\Name>\Note0.txt" (
    set /p Var=<"<Full\Path\Name>\Note0.txt"
    setlocal enabledelayedexpansion
    Echo !Var!
    endlocal
    pause>nul
    goto :ReadLoop
)
@Echo关闭
setlocal
:ReadLoop
如果存在“\Note0.txt”(
设置/p变量=nul
goto:ReadLoop
)

。。。会给你你期望的结果。您可以在脚本开头的
@echo off
下方激活
enabledelayedexpansion
,但如果这些值包含感叹号,则这样做有时会对设置变量值产生不利影响。无论如何,请放心,但如果遇到问题,请记住我的警告。

代码似乎没有问题。然而,我注意到每当我使用if-block语句时都会发生一些奇怪的事情,比如if-something(做一些事情..做更多事情)。我所做的是使用内联if语句,比如if exists“myFile”来做一些事情,而另一个if exists“myFile”来做其余的事情。只需尝试内联ifs,看看它是否会改变。
set "test=apples"
(
    set "test=oranges"
    setlocal enabledelayedexpansion
    echo %test% and !test!
    endlocal
)
@Echo off
setlocal

:ReadLoop
if exist "<Full\Path\Name>\Note0.txt" (
    set /p Var=<"<Full\Path\Name>\Note0.txt"
    setlocal enabledelayedexpansion
    Echo !Var!
    endlocal
    pause>nul
    goto :ReadLoop
)