2011-12-28 8 views
5

現在の日/月/年を抽出するためのバッチファイル構文の簡単な内訳が見つかりません。バッチファイルの日/月/年の構文は?

ディレクトリ名として使用する変数を宣言するための構文は次のとおりです。

set folder=%date:~10,4%%date:~7,2%%date:~4,2% 

チルダが何を意味するのか誰かが軽い(リンクを投稿する)ことができますか?私は直感からそれを完全に解読しているようには見えません。

+0

この投稿を見ることができます、素晴らしい例があります:http://stackoverflow.com/questions/1192476/windows-batch-script-format-date-and-time –

+0

google "windowsバッチファイルの構文" –

+1

@Fredrikあなたがgoogleの "windowsバッチファイルの構文" :-) – paxdiablo

答えて

7

二重パーセントは絶対に何も意味しません。チルダはあなたに部分文字列を与え

echo %firstname%%lastname% 
    \_________/\________/ 
     Two separate expansions. 

:それは単に、例えば2つの変数の展開サイド・バイ・サイドを持っていることの結果です。あなたのケースでは、%date:~10,4%は、date環境変数のオフセット10で4文字を返します(オフセットは0から始まるThu 29/12/2011である可能性が高いため、この場合の年です)。

あなたは、Windowsのコマンドpronptでset /?を入力した場合、それは文字列の末尾から抽出するために、負のオフセットを使用しての気の利いたトリックなど、あなたのためのすべてのオプションを、説明します。

ただし、環境変数の形式がdateのロケールによって異なりますので、この単純な文字列の抽出は、すべての国際版のWindows(このビットは2,3年前)で動作しない可能性があります。

FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Dayˆ,Hourˆ,Minuteˆ,Monthˆ,Secondˆ,Year /Format:table') DO (
    IF NOT "%%~F"=="" (
     SET /A SortDate = 10000 * %%F + 100 * %%D + %%A 
     SET /A SortTime = 10000 * %%B + 100 * %%C + %%E 
     SET SortTime=0000000!SortTime! 
     SET SortTime=!SortTime:~-6! 
    ) 
) 
2

〜と%%は文字列を分割しています(コマンドにdateと入力すると、完全な文字列が表示されます)。

%日付:〜10,4%は、10番目の文字から次の4文字を取得することを意味します。

また、異なる地域設定を使用している異なるPCについては、文字列内の文字の順序が変更されるので注意してください。

関連する問題