• ベストアンサー

batファイルで日付を取得

初めまして。質問させていただきます。 バッチファイルで複数のフォルダからエクセルファイルをひとつのフォルダにコピーする方法を教えてください。 条件としては、 Aフォルダの名前:0413荒川 Bフォルダの名前:0413葛飾 Cフォルダの名前:0413台東 保存先:会計東京 毎日日付が変わる為、下記では対応出来ませんでした。 echo off copy D:\会計\東京\4月分\0413荒川\*.xls 会計東京 copy D:\会計\東京\4月分\0413葛飾\*.xls 会計東京 copy D:\会計\東京\4月分\0413台東\*.xls 会計東京 0413は今日の日付になります。 この、0413を自動で取得する方法を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

別のやり方で。 set TODAY=%date:~-6% set TODAY=%TODAY:/=% の二段階の手間になりますが、これでも TOADYの内容が今日なら 0417になります。 ただし、これは 9x系のWindowsでは使えません。 とここまで書いて#1の方の回答を見て思いついたのが for /F "delims=/ tokens=2,3" %F in ("%date%") do echo %F%G これでも 0417 になりました。 補足: set /? するとわかりますが、%DATE%は組込みの環境変数で その日の日付文字列を保持しています。

kurobu-san
質問者

お礼

ありがとうございました。 思い通りのものができました。 更に勉強したいと思います。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

あ, DATE なんて環境変数あるんだ. 知らなかった....>#2 明らかに #2 の方が筋がいいので, そちらを使うことを強く勧めます. わかりやすさでは #2 の前の方がいいと思う....

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

Windows XP Professional が動いている手元の計算機で実験しました. まず現在の日付を表示する方法ですが, date < nul でできます. で, これをうまくパースすればいいんですが for /F "delims=/ tokens=2,3" %F in ('date < nul') do echo %F%G ではうまくいきません (エラーになります). ところが date < nul という (1行だけの) 内容で today.bat を作ると for /F "delims=/ tokens=2,3" %F in ('today.bat') do echo %F%G で現在の日付が MMDD の形で表示されます. ということで, for /F "delims=/ tokens=2,3" %F in ('today.bat') do set TODAY=%F%G とやると環境変数 TODAY に現在の日付が設定されます. その内容は %TODAY% という形で使えます.

kurobu-san
質問者

お礼

ありがとうございました。 思い通りのものができました。 更に勉強したいと思います。

関連するQ&A

  • bat について

    @echo on for %%F in ( D:\1\*.xls ) do call :sub "%%F" %%~tF exit /b :sub if not %2==%date% goto :EOF copy /d /y "%~f1" D:\2 goto :EOF 上記は1のフォルダのxlsの最新のファイルを2のフォルダにコピー ですが1のフォルダの中に1Fを含むファイル(20120915-1F) この1Fを含むファイルで最新のファイルだけを2のフォルダにコピーしたいのです。 どうか宜しくお願い致します。

  • 【VBA】「時間+日付.xls」ファイルの作成

    vbaで 「Shell ("cmd /C copy """ & 」を使用し、 今日の日付と時間を名前にしたエクセルファイル( Time$ & Time$ をファイル名にして)を作成しているのですが Date$ →2009-05-12 は、エラーになることなくファイルが作成できるのですが Time$→16:00:24 は、↑の様に「:」が入ってしまう為エラーになってしまいます。 VBAを使って現在の「時間+日付.xls」を作成するにはどうしたらよいでしょうか? ちなみにnow$はライブラリにすらありませんでした。 ご教授よろしくお願いします。

  • ファイルのコピー

    毎日、3つのファイル (この質問では1つとします) をコピーするのですが、簡単にしたいと思っています。 1. c:\log\log.2008-07-25 という名前のファイル (日付は昨日の日付) 2. c:\20080725\log というフォルダ (日付は昨日の日付) 1のファイルを2のフォルダ内にコピーしたいです。 ファイル名やフォルダ名の日付部分は、昨日の日付なので、毎日変化します。 調べたところ、メモ帳で以下のように書いて、copy.cmdなどという名前で保存すればいいというところまでは分かりましたが、日付の変化に対応できません。 copy c:\log\log.2008-07-25 c:\20080725\log これに加え、毎日、同じ時間にこのスクリプトを自動実行できればさらにいいと思っています。可能でしょうか。 宜しくお願い致します。

  • エクセル)日付を取得しファイルを検索してセルの値をコピー

    初めまして。 会社で急にエクセルを扱うことになり、本などを買って勉強中な初心者です。 今の私では難しすぎるので質問させてください。 ---------------------------------------------------------------- C:\AAA\本数集計値.xlsのaシート ......A.....B.....C.....D.....E......F......G......H 1...2009........9 2............3......4......5......6......7......8......9 3 4 5............10....11...12...13...14....15....16 本数集計値.xlsのaシートは上の図のようになっていて、A1に年、C1に月、B2~H2までは日にちを手入力で入力してあります。 ただし、B列には、週の頭として必ず木曜日が入ります。 このファイルには4週分の日付が入力してあります。4週過ぎたら日付だけ変えて再利用しています。 C:\BBB\第XX週本数計測値.xlsのbシート ....A.....B.....C.....D.....E.....F.....G.....H.....I 1..................9 2..................3......4......5.....6......7.....8.....9 3..................xx 4 5..................yy 第XX週本数計測値.xlsのbシートは上の図のようになっていて、C1に月、C2~I2までは日にちが入ります。 こちらも、週の頭は木曜になっています。 XXには"C1"月"C2"日から"I2"日までがその年の第何週目か、を入力してあります。 BBBフォルダには第01週本数計測値.xlsから数字が違うだけのファイルを毎週作っています。 xx、yyには3~5桁の数字が入ります。 ■質問 本数集計値.xlsの各セルに手入力された年月日から、何週目かを取得し、その週のファイルをC:\BBB\から検索し、該当する第XX週本数計測値.xlsのbシートの値、xx、yyを本数集計値.xlsのaシートの同じ日付の所定のセルにコピーしたいのです。(例えば9/3は36週目なので第36週本数計測値.xlsをBBBフォルダから検索し、そのbシートのxx、yyをコピーし、本数集計値.xlsの9/3の真下のセルB3にxx、B4にyyとペーストしたいのです) 長々と書きましたが、こんなことができそうな気がするのですが、 どうかご教授の程よろしくお願い申し上げます。

  • 全ファイルの日付が変わってしまった

    Win98を使っているのですが、昨日、カレンダーの日付がずれていることに気づきました。80年1月4日になっていたのです。 コントロールパネルから元に戻すことはできたのですが、今日は全てのファイルやフォルダ(書類やプログラムなど全てと思われる)の日付が変わっていることに気が付きました。やはり80年1月4日でした。 いったい原因は何なのでしょうか? また、変わってしまった日付を元に戻すことは可能なのでしょうか。 どなたかよろしくお願いいたします。

  • batファイルの実行について

    batファイルを作成しました。 (ATコマンドにてスケジュールさせたいと考えてます。) ファイル自体をダブルクリックで実行すると正常に処理が完了しますが、コマンドプロンプトから実行しようとすると以下のエラーが発生します。 〓〓〓〓〓〓〓〓〓〓〓〓 C:\>cmd /c "E:\MirroringTool\SimpleFolderMirror\test.bat" 指定した名前は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されません。 〓〓〓〓〓〓〓〓〓〓〓〓 実行させたいbatファイルは以下のとおりです。 〓〓〓〓〓〓〓〓〓〓〓〓 echo off cls rem ↓SimpleFolderMirror.exeを解凍したフォルダ SET EXEFOLDER_PATH="E:\MirroringTool\SimpleFolderMirror\" rem ↓ログの出力フォルダ・ファイル SET LOG_DIR="E:\MirroringTool\SimpleFolderMirror\logs\" rem ↓ミラー元フォルダ1 SET COPY_FROM_PATH_01="S:\" rem ↓ミラー先フォルダ1 SET COPY_TO_PATH_01="E:\ORANT\OWS" cd %EXEFOLDER_PATH% SimpleFolderMirror.exe %COPY_FROM_PATH_01% %COPY_TO_PATH_01% > %LOG_DIR%logs.txt 〓〓〓〓〓〓〓〓〓〓〓〓 cd %EXEFOLDER_PATH%のところまでは処理は完了しているようなので、最後の行のところで発生しているようです。 何が原因でエラーが発生してしまっているのでしょうか? 宜しくお願い致します

  • ファイルとフォルダの日付変更について

    アルバムを作っているのですがフォルダの名前順や日付順でソートがしたいので任意の日付をフォルダに付けたいのとファイル名やフォルダ名のリストをプリントアウトしたいのですがよろしく。

  • フォルダーを問わずファイル一覧を見たい

    デジタルカメラやスマホの写真のバックアップを定期的にHDDに全COPYすることによって行っていますが、ただただ累積されたファイルをその時々にポリシー無く名前を付けた新規フォルダーにCOPYしています。世代管理を全く行っていないので、同じHDDに重複ファイルがたくさんあります。重複排除/削除のフリーソフトは使っているので、その消去には困っていないのですが、実際残ったものを日付別に並べるとなると、いちいち各フォルダーを開けてどこかのワークフォルダーに一時的にCOPYしてから並び替えるしかありません。 同一ドライブ下の雑多な階層のフォルダーにあるファイルの一覧を、どこのフォルダーにあるかを意識しなくても日付順にフラットに並べ替えて参照できるようなソフトは存在しないものでしょうか。

  • VBA セル入力された日付データから年月のみを取り出してファイル名につけたい

    セル入力された日付データから年月のみを取り出してファイル名につけたい、のですが・・・ 下記のようなイメージです。  A列    B列 1 日付   商品名   2 2009/9/1 みかん    3 2009/9/2 とまと    4 2009/9/15 きゅうり という明細データがある場合、 このファイルのファイル名を明細行の1番上(A2セル)に日付の年月だけにして保存したいのですが、可能でしょうか。 (上の例だと200909.xlsになるようしたいのですが) ちなみに今は↓こんなコードでコピーしたファイルに名前をつけようとしていますが、エラーになってしまいます・・・ Sheets(1).Copy ファイル名 = "\" & Sheets(1).Range("B13").Value & ".xls" ActiveWorkbook.Close SaveChanges:=True, _ Filename:=ThisWorkbook.Path & ファイル名 宜しくお願い致します!

  • ファイルの日付取得

    お世話になります。 Perl/CGIで悩んでいるところがあり質問させていただきに参りました。 サーバ上の、とあるフォルダに下にある.htmlファイルの一覧を表示・リンクし、またその各ファイルの最終更新日付を表示したいと思っています。 そこで下記の様な、ソースを書きました。 opendir (DIR,$dir) ; @files = grep { /\.html$/ } readdir DIR; close DIR; foreach $filename (@files){ $modtime = (stat($filename))[9] ; # ($sec, $min, $hour, $mday, $mon, $year) = localtime($modtime); $year = $year + 1900; $mon= $mon + 1; print "<a href=html/$filename>$filename</a>[作成日:$year 年$mon月$mday日$hour時$min分$sec秒]<P>\n"; } これを実行すると、複数ファイルのうち、1つのファイルだけが、なぜか正常に表示され、あとのファイルはすべて 「1970 年1月1日9時0分0秒」となってしまいます。 これはどうしてなんでしょうか?? 分かる方がいらっしゃいましたら、ご教授の程、よろしくお願いします。 環境:Windows 2000 Server,IIS,ActivePerl

    • ベストアンサー
    • Perl

専門家に質問してみよう