bat文件读入文件

时间:2013-10-06 15:33:18

标签: date batch-file

我有一个包含

的文本文件datefile.txt

2013年10月6日

我尝试使用以下bat文件阅读它:

@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ datefile.txt"`) do (
    set "var=%%a"
    SETLOCAL EnableDelayedExpansion
    set "var=!var:*:=!"
    echo(!var!
    ENDLOCAL
)
echo %var%

我得到的输出是:

10/06/2013
1:10/06/2013

为什么我的%var%与上面的不同。 或者如何删除%var%?

中的“1:”

感谢。

2 个答案:

答案 0 :(得分:2)

你有这种类型的输出,因为第一行是echo(!var!写的 第二行是echo %var%,但在第二种情况下,变量不包含相同的内容。

这是因为for循环中的Setlocal / endlocal块。

在您的情况下,您可以简单地删除该块,因为您的日期不包含任何感叹号或插入符号。

@echo off
SETLOCAL EnableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ datefile.txt"`) do (
    set "var=%%a"
    set "var=!var:*:=!"
    echo(!var!
)
echo %var%

如果您的文件只包含一行,则可以通过

简化解决方案
<datefile.tx set /p var=
echo %var%

答案 1 :(得分:0)

解决方案是使用dos substr replacement替换“1:”:

http://www.dostips.com/DtTipsStringOperations.php#Snippets.Remove