実行時にいくつかのファイルを生成するスクリプトがあります。スクリプトを修正し、上部に次の2行を追加しました。
mkdir ABC
cd ABC
このように形成された新しいファイルはこのディレクトリにありますABC
。私の質問は、3月26日にスクリプトを実行している場合、このディレクトリ名に現在の日付を追加する方法ですABC
(ABC_mar_26
日付形式の特定の標準もありませんABC_03_26
)。
答え1
取得するにはABC_03_26
:
mkdir "ABC_$(date +'%m_%d')"
月の名前が必要な場合:
mkdir "ABC_$(LC_ALL=C date +'%b_%d')"
%b
そのロケールの略月名が提供されますが、最初の文字は大文字で表示されます。
これにより、次のことzsh
ができます。
mkdir "ABC_${(L):-$(LC_ALL=C date +'%b_%d')}"
または使用急速な拡張:
$ LC_ALL=C; print -rl -- ${(L)${(%):-%D{%b_%d}}}
mar_26
答え2
以下は、Windows / cygwinユーザーが興味を持っている可能性がある問題の具体的なサンプルアプリケーションです。私は.bat
現在の日付と時刻の名前の付いたサブフォルダを作成してファイルを自動的にバックアップするバッチスクリプトを作成しました。まず、環境から変数を取得してからフォーマットし、%time%
最後に0
文字列を新しい変数に連結して%datetimef%
次に渡しますmkdir
。
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
set year=%date:~-4%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
set datetimef=%year%%month%%day%-%hour%%min%%secs%
mkdir version%datetimef%
cp *.pdf version%datetimef%/