我有一个文本文件日期文件.txt它包含
2013-06-10
我尝试使用以下 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:"?
谢谢。
你得到了这种类型的输出,因为第一行是由 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%
解决方案是使用 dos substr 替换删除"1:":
http://www.dostips.com/DtTipsStringOperations.php#Snippets.Remove