我有一个包含
的文本文件datefile.txt2013年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:”感谢。
答案 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