お世話になります。
WindowsNT4.0サーバーにてDOSバッチで処理日のフォルダを作成したいのですが、win2k以上ではdateが環境変数で当日の日付が設定されているのにwinNTではdateが登録されていないことは確認済みで、winNTではDOSBバッチ処理で日付を取得することは不可能なのでしょうか?date /tで日付を表示することは出来るのですが。
NTという古いOSで申し訳ありませんが、ご存知の方ご教示願います。
バッチ処理は毎日1回実行して、日々のフォルダを作成する感じにしたいです。
なお、環境はwindowsNTサーバー4.0SP6
以上、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.2 です。
先ほど回答したサンプルの1行目の記述で%が1つ抜けていたので訂正します。
for /F "tokens=1" %%d in ('date /t') do set dt=%%d
set folder=%dt:/=%
echo %folder%
>これは、date /tを読み込んで頭から変数に格納するような感じでしょうか。
>date /tは変数でないし、'date /t'としてしまうと、文字列になってしまうような気がするのですが。
for /F ..... in ('コマンド') do ......
でコマンドの実行結果の出力を取り込むことができます。
for /? のNTでの出力の抜粋を以下に転記しておきます。
---------------------------------------------------------------
最後に、FOR /F コマンドを使って、コマンド出力を解析することもできます。
それには、カッコで囲んだファイル名セットを一重引用符で囲みます。この文字列は
コマンド ラインとして子 CMD.EXE に渡され、その出力が、ファイルと同じ
ようにメモリにキャプチャされ、解析されます。
例:
FOR /F "delims==" %i IN ('set') DO @echo %i
この例は、現在の環境内の環境変数名を列挙します。
出来ました!!
プロンプトで実行するのとバッチ処理でと違う結果になるようですね。
そういうことを以前聞いたことあります。
DOSバッチは普段作ることないので、FORでコマンド出力をキャプチャ出来るなんて知りませんでした。
とても助かりました♪
有難うございました!!
No.4
- 回答日時:
#1です。
私の回答につけてありましたコメントについては#3さんがコメントをつけて頂いているので割愛するとし、#2さんの回答に対するコメントで
>ご提示のまま実行したところ、
>d
>とだけ表示しました。
とありましたが、これは#2さんが#3で訂正した前のコードを実行していませんか? また
>プロンプトで1行ずつ実行すると、for分の行で「%%dの使い方が間違ってます」とエラーメッセージ表示します。
とありますが、変数で%を2つ重ねて記述するのはバッチファイルで利用する場合の記述なので
プロンプトで実行すると文法エラーになります。
P.S.私の奴も確かNTのバッチで動かしてやつなんですけどねぇ…(^^;
#1さんのは、
for /F "tokens=1-3 delims=/ " %%i in ('date /t') do SET DT=%%i%%j%%k
echo %DT%
とやっていたのでダメみたいでした。
for /F "tokens=1-3 delims=/ " %%i in ('date /t') do SET DT=%%i%%j%%k
set folder=%dt:/=%
echo %folder%
とすると同じように日付取得出来ました!
>set folder=%dt:/=%
は YYYY/MM/DD → YYYYMMDD に書式変更するための記述ということですが、これをしないと表示も出来ないんでしょうか?
やっぱりまだ分かってないので調べます。
とにかく、#1さんのも取得できました。(足りないのは私の理解度?DOSバッチって分かりにくいですよね・・・)
有難うございました。
No.2
- 回答日時:
次のように for /F を使えば、NT4/2000/XP/2003 で共通に使えます。
for /F "tokens=1" %%d in ('date /t') do set dt=%d
set folder=%dt:/=%
echo %folder%
環境変数 dt に %date% と同様にYYYY/MM/DD の日付が入ります。
2行目の set folder=%dt:/=% は YYYY/MM/DD → YYYYMMDD に
書式変更するための記述です。
(フォルダ名に使用可能とするため"/"を取り除いています)
ご提示のまま実行したところ、
d
とだけ表示しました。
プロンプトで1行ずつ実行すると、for分の行で「%%dの使い方が間違ってます」とエラーメッセージ表示します。
何かサーバー自体に設定必要なんでしょうか。
No.1
- 回答日時:
現在NT環境がないので確認はできないのですが、以下のような方法で
バッチ内で日付の取得が出来たと思いましたよ(変数DTに設定)
for /F "tokens=1-3 delims=/ " %%i in ('date /t') do SET DT=%%i%%j%%k
試してみましたがエラーが出るようです。
これは、date /tを読み込んで頭から変数に格納するような感じでしょうか。
date /tは変数でないし、'date /t'としてしまうと、文字列になってしまうような気がするのですが。
一応、ありがとうございました。
他に方法無いですかね・・・。
NTでは無理!という場合もその旨教えて戴ければと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- Excel(エクセル) 「休日取得希望日」を申請したらシフト表に色付け 1 2022/04/17 14:22
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- FTTH・光回線 AU光回線の速度が出ません 2 2022/07/30 16:05
- 環境・エネルギー資源 会社で行う環境活動 1 2022/03/31 13:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
DHCP設定バッチnetshコマンドに...
-
リモートデスクトップの取り合...
-
バッチファイルを実行後、終了...
-
batファイルを実行してコマンド...
-
DOSコマンドのforで空白行をス...
-
ERRORLEVELが-100になるパターン
-
DELコマンド
-
バッチファイルを常に管理者権...
-
batファイルで、call使っても戻...
-
次の要件を満たすにはどのよう...
-
タスクスケジューラでバッチを...
-
実行結果を戻り値で取得したい
-
Wimで第2のWindowsのPGを起動...
-
何のピンバッチでしょうか?JAT...
-
バッチ実行を意図的に失敗させ...
-
コマンドの結果を変数に入れたい
-
oracleのimp-00002エラーについて
-
ゲームキューブのペーパーマリ...
-
Androidアルバムの画像を消去で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
DHCP設定バッチnetshコマンドに...
-
batファイルで、call使っても戻...
-
リモートデスクトップの取り合...
-
バッチファイルを実行後、終了...
-
oracleのimp-00002エラーについて
-
DOSコマンドのforで空白行をス...
-
バッチプログラムについて(編...
-
バッチでEnterを認識させ...
-
batファイルを実行してコマンド...
-
バッチ実行を意図的に失敗させ...
-
バッチファイルでPC情報を取得する
-
コマンドの結果を変数に入れたい
-
batが実行できない
-
バッチ実行時にバッチのファイ...
-
Windowsコマンドプロンプトで環...
-
何のピンバッチでしょうか?JAT...
-
WMICでリモートでバッチが実行...
-
ログオンユーザを簡単に切り替え
-
DBサーバとバッチサーバ
おすすめ情報