首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bat文件读取文件

bat文件读取文件
EN

Stack Overflow用户
提问于 2013-10-06 15:33:18
回答 2查看 90关注 0票数 1

我有一个文本文件datefile.txt,其中包含

10-06-2013

我试着使用以下bat文件读取它:

代码语言:javascript
复制
@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%

我得到的输出是:

代码语言:javascript
复制
10/06/2013
1:10/06/2013

为什么我的%var%与上面的%有所不同。或者如何删除%var%中的"1:“?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-06 20:42:42

您得到了这种类型的输出,因为第一行是由echo(!var!编写的。

echo %var%的第二行,但在第二种情况下,变量不包含相同的内容。

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

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

代码语言:javascript
复制
@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%

如果您的文件只包含一行,则可以通过以下方法简化解决方案

代码语言:javascript
复制
<datefile.tx set /p var=
echo %var%
票数 2
EN

Stack Overflow用户

发布于 2013-10-06 17:02:36

解决方案是使用dos substr替换删除"1:“:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19210544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档