2013-10-06 148 views
1

讀我有一個包含bat文件在文件

2013年10月6日

一個文本文件datefile.txt,我嘗試使用下面的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

簡化我真的建議你PowerShell的,如果你有機會獲得它。它使生活變得如此簡單。 – ComFreek

+0

我幾乎在那裏...只需要刪除「1:」....請幫助,如果你可以。 – john

回答

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% 
+0

很有教育意義!解釋得很好。謝謝! - 我這樣做的方式只是一個骯髒的技巧,不理解dos命令的真實邏輯.... – john