web-dev-qa-db-ja.com

Windows-10バッチファイルはDATEコマンドに基づいており、Windowsの下位バージョンでの使用方法

私は2つの(仮想)マシンで作業しています:

  • 最初はWindows10マシンです
  • 2番目はWindows7マシンです

どちらの場合も、短い日付形式は同じです:_dd.MM.yyyy_
両方で、DATEコマンドに基づいて同じバッチファイルを実行しています。

DATEコマンドの結果の結果に関連して、結果に違いがあります。

  • Windows 10の場合:_The current date is: st 22.03.2017_
  • Windows 7の場合:_The current date is: 22.03.2017_

ご覧のとおり、違いは今日の名前の存在によるものです(stはチェコ語のWednesdayの略語です)。

Windows 10システムがマスターなので、私の質問:Windows-7システムを変更して、その日の名前の最初の2文字を含めるにはどうすればよいですか?

テストとして、私はすでに短い日付形式で次のことを試しました。

_dd dd.MM.yyyy   // this is better, the length of the format is good,
                   but it does not start with the initials of the day's name.
dddd dd.MM.yyyy // this starts with the day's name, but completely, 
                   and I only want the first two letters.
_

その間、私は問題をさらに調べました。日付形式は2つの場所で使用されているようです。

  1. DATEコマンドラインコマンドを使用している間(次のような形式が必要です)
    _xx dd.MM.yyyy_(xxが何であれ)さらに処理する
  2. 次のechoの実行中:for /r %DIRECTORY% %I in ("*.*") do echo %~tfIアイデアは、タイムスタンプとファイル名を次のように表示することです。
    _22.03.2016 13:50 <filename>_(xxなし)
2
Dominique

なんて混乱なのでしょうが、私はこの問題の解決策を見つけたと思います。

重要な点は次のとおりです。Windows10では、単純な日付形式(dd.MM.yyyyなど)でも、date /Tコマンドラインはその日の最初の文字を追加するため、次のようになります。

date /T
st 22.03.2017

そして、私の同僚は、それらの「st」文字の存在を中心にバッチファイルを作成しました。これらのバッチファイルをより低いバージョンのWindowsで実行すると、前述の問題が発生します。

バッチファイルの先頭に、次の行を追加しました。

DATE=xx %DATE%

(非常に幼稚です、私は認めます)
これにより、バッチファイルがWindows-7コンピューターで機能するようになります。
両方のシステムで機能させるには、プラットフォームに次のようなチェックを追加する必要があります。

set WINDOWS_10=%ver | findstr /C:"Version 10"%
if "WINDOWS_10"=="" (
  set DATE=xx %DATE%)

Windows-10 PCではまだチェックしていませんが、これでうまくいくと思います。

0
Dominique

Windows 7では、dddを使用して、2文字ではなく3文字の同様の形式にする必要があります。

したがって、ddd dd.MM.yyyyを使用できます。これがサポートされている形式です。

2文字に到達する方法は、バッチファイルで1文字を削除することです。

1
Overmind