1

を含むテキスト ファイル datefile.txt があります。

2013 年 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:」を削除するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

2

最初の行は によって書かれているので、このタイプの出力が得られecho(!var!ます。
の 2 行目echo %var%ですが、2 番目のケースでは、変数には同じものが含まれていません。

これは、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%

ファイルに1行しか含まれていない場合、ソリューションは次のように単純化できます

<datefile.tx set /p var=
echo %var%
于 2013-10-06T20:42:42.053 に答える
0

解決策は、dos substr 置換を使用して「1:」を削除することです。

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

于 2013-10-06T17:02:36.627 に答える