我有一个文本文件datefile.txt,其中包含
10-06-2013
我试着使用以下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:“?
谢谢。
发布于 2013-10-06 20:42:42
您得到了这种类型的输出,因为第一行是由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%发布于 2013-10-06 17:02:36
解决方案是使用dos substr替换删除"1:“:
http://www.dostips.com/DtTipsStringOperations.php#Snippets.Remove
https://stackoverflow.com/questions/19210544
复制相似问题