ログをコピーして移動させたいがうまくいかない

このQ&Aのポイント
  • ログをコピーし移動させたいのですがうまくいきません。タスクで時間になると起動させるつもりですが、例えば「AAA200801.txt」と1月31日終わった時点で吐き出されたログを別フォルダへ「AAA.txt」と2月1日の何時かにリネームしてコピーしたものを移したいと考えています。テストしているのですが移動しません(泣)どこか間違っていますか?
  • 四半期ごとに出たログをまとめて「AAA200801.txt」を「AAA1.txt」、「AAA200802.txt」を「AAA2.txt」というようにまとめて変換し、上記同様に別フォルダへリネームしてコピーしたいですが、どうしたらよいでしょうか?
  • 質問者はログをコピーして移動させたいが、うまくいかないと困っています。具体的には、タスクで起動するように設定し、前月のログを当月のファイルにリネームしてコピーしたいとしていますが、うまく移動できないようです。どこが間違っているのか教えていただけますか?
回答を見る
  • ベストアンサー

ログをコピーして移動させたいがうまくいかない

ログをコピーし移動させたいのですがうまくいきません。 どなたか間違いがあったら教えてください。 タスクで時間になると起動させるつもりですが例えば「AAA200801.txt」と1月31日終わった時点で吐き出されたログを別フォルダへ「AAA.txt」と2月1日の何時かにリネームしてコピーしたものを移したいと考えています。 テストしているのですが移動しません(泣)どこか間違っていますか? @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a LASTMONTH=YYYYMM-1 if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100 echo copy C:\test1\AAA%LASTMONTH% .txt C:\test2\AAA.txt また、四半期ごとに(例えば1~3月)出たログをまとめて「AAA200801.txt」を「AAA1.txt」、「AAA200802.txt」を「AAA2.txt」というようにまとめて変換して上記同様に別フォルダへリネームしてコピーしたいのですがどうしたらよいでしょうか?

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

当然ですが、Echoは外してますよね・・・ 少なくとも、提示されたプログラムでは、 > echo copy C:\test1\AAA%LASTMONTH% .txt C:\test2\AAA.txt 「%LASTMONTH%」と「.txt」の間に、空白が入ってますから移動しないですよね・・・ #投稿時の下記間違い? 実際のコードを提示してください。

mr_r00
質問者

お礼

単純間違いで空欄が原因でした 恥ずかしいです・・・ありがとうございました

関連するQ&A

  • バッチでファイルをリネームして別フォルダ移動に行き詰まり・・・

    バッチ(コマンドプロンプト)でファイルをリネームして別フォルダに移したいのですが行き詰ってしまったのでどなたかご教示ください。当方XPの環境です。 まず、今日(例:2月4日時点で)簡単に説明するとあるフォルダに3つファイルが存在します。 「test1」フォルダに「AAA200711.txt」「AAA200712.txt」「AAA200801.txt」があるとします。 数字はその月に作ったファイルと思ってください。 そのファイルを「test2」フォルダへ移したいと思っています。 移す際にファイル名をリネームしたいと思います。 2008年1月のものを「AAA1.txt」2007年12月のファイルを「AAA2.txt」といった感じでやるつもりです。 当方で考えた下記の構文でですが先月、先々月のものはうまくリネームしてコピーされました。 ですが3ヶ月前のファイルだけなぜか出来ません。 下記にあるのはそのまんまコピーしたものになります。 原因がわからず戸惑っておりますのでよろしくお願いします。 @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a LASTMONTH=YYYYMM-1 if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100 copy C:\test1\AAA%LASTMONTH%.txt C:\test2\AAA1.txt @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a TWOMONTHAGO=YYYYMM-2 if %TWOMONTHAGO:~-2%==00 set /a TWOMONTHAGO+=12-100 copy C:\test1\AAA%TWOMONTHAGO%.txt C:\test2\AAA2.txt @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a THREEMONTHAGO=YYYYMM-3 if %THREEMONTHAGO:~-2%==00 set /a THREEMONTHAGO+=12-100 copy C:\test1\AAA%THREEMONTHAGO%.txt C:\test2\AAA3.txt ↑これがうまくいかないのです。 日付の計算とかが間違っているのでしょうか? cd /d C:\test2 del AAA*.txt

  • コマンドプロンプトで2ヶ月前3ヶ月前の計算

    2ヶ月前 3ヶ月前の計算をしたいと思っております。 途中までわかるのですが例えば前年度という条件になったとき失敗してしまいます。 2ヶ月前: @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a TWOMONTHAGO=YYYYMM-2 if %TWOMANTHAGO:~-2%==00 set /a TWOMONTHAGO+=12-100 copy C:\test1\AAA%TWOMONTHAGO%.txt C:\test2\AAA3.txt if文が間違っているのはわかりますがどう計算したらよいか思いつきません・・・よろしくお願いします。 3ヶ月前: @echo off set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a THREEMONTHAGO=YYYYMM-3 if %THREEMONTHAGO:~-2%==00 set /a THREEMONTHAGO+=12-100 copy C:\test1\AAA%THREEMONTHAGO%.txt C:\test2\AAA3.txt

  • 更新日による条件指定について

    まず以下はIISの前月のログをバックアップフォルダに移動して1年間保存するためのバッチ記述です。 @echo off set YYYYMM=%date:~-10,4%%date:~-5,2% set /a LASTMONTH=YYYYMM-1 if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100 del /q c:\log\iis_back\%LASTMONTH:~4%\*.* move /y c:\log\iis\w3svc1\ex%LASTMONTH:~2%*.log c:\log\iis_back\%LASTMONTH:~4%\ IISログのようにファイル名から作成された日付がわかるものは以上の記述で機能するのですが、SQLのログファイルのようにファイルの最終更新日からしか判断の出来ないファイルでも同じような動作をさせるバッチを作りたいです。 ファイルの更新日を条件対象とすることはできないでしょうか?

  • バッチファイルのrdでログを吐きたい

    現在rdコマンドを使い、失敗した場合、成功した場合どのフォルダを削除したか、等のログを吐きたいのですが、ログが吐けません ログの吐き方をご存知の方ご教授いただければと思います フォルダ構成 -log.txt -test -rd.bat rd.batを実行すると、testフォルダが削除され、log.txtに記述されます また、rd.batはtest2を削除しようとしますが、test2というフォルダは存在しないため、エラーをlog.txtに記述します rd.batの内容 @echo off rd test /S /Q >> log.txt rd test2 /S /Q >> log.txt この状態で実行しますと、log.txtは何も書き込まれないままです echoをつけて echo rd test /S /Q >> log.txt にするとrdが実行されません どなたかご存知の方ご教授よろしくお願いいたします

  • コマンドプロンプトの日数計算で工夫が必要な場合

    コマンドプロンプトを使って日数計算をしたものを修正したいのですがどうすれば良いでしょうか? set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a LASTMONTH=YYYYMM-1 この日数計算をすると今から一か月前の日付が取れます。 (今なら200802なので200801ですね) その内下四桁をLASTMONTHとして扱いたいのですがどうしたら良いでしょうか?例として200801と計算が出たもののうち0801だけのように抜き出したいんです。 if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100 そのあとの分は上記のようになっています。(まだ意味がわかってはいません) よろしくお願いします。

  • VBSでファイル名と同じフォルダを作成し、移動させる。

    はじめまして。こんにちは。ファイル名の取得、フォルダの作成、移動ができなくて困っています。 たとえばC:\testというフォルダの中にaaa1.txt aaa2.txt,aaa3,txt・・・zzz343.txtというようにファイルがランダムにあったとします。最初の3文字は英語と決まっています。そこでaaa1.txtやaaa2.txtがあればaaaというフォルダを同じ階層に作成し、aaa1.txtとaaa2.txtを新しく作成したaaaというフォルダに移動させる。これをすべてのファイルにたいして行いたいのですがどうすればいいのでしょうか? 参考になるURLやサンプルプログラムがありましたら教えて下さい。よろしくお願い致します。

  • 他PCへのファイルコピー

    お世話になります。 Webからファイルアップロードしたいのですが、 ファイルサーバーがWebサーバーとは別になっています。 IISで仮想ディレクトリには設定したのですが、 うまくアップできません。 で、ローカルディレクトリにファイルをアップしてから ファイルコピーしようとしたのですが、 やはりできません。 Set objFSO = Server.CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "C:\test\aaa.txt", "\\server1\c:\temp\aaa.txt",True マシンserver1のtempフォルダをネットワークドライブZにしてみて objFSO.CopyFile "C:\test\aaa.txt", "z:\temp\aaa.txt",True としてみてもダメでした。 どうすればアップできるでしょうか? なにか権限の問題でもあるのでしょうか?

  • バッチファイル フォルダ存在 確認

    いつも大変御世話になっております。 WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。 上記バッチファイルは以下のようになっています。 コード------------------------------------------------ rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set YMD=%date:~-8,10% set HHMMSS=%time:~0,8% set FILE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%%TIME:~0,2%%TIME:~3,2% set FILE_DATE=%FILE_DATE: =0% rem --- フォルダ変数 --- set log=D:\test\drive_xcopy\log set INP_DIR=D:\test\drive_xcopy\in set OUT_DIR=D:\test\drive_xcopy\out\ rem --- ファイル変数 --- set logName=log.txt echo "%YMD%","%HHMMSS%","FOLDER.bat","処理開始" >> %log%\%logName% REM フォルダコピー XCOPY "%INP_DIR%" "%OUT_DIR%" /e /Y >> %log%\%logName% echo "%YMD%","%HHMMSS%","FOLDER.bat","処理終了" >> %log%\%logName% コード------------------------------------------------ 単純に【D:\test\drive_xcopy\in\】内のすべてのフォルダを 【D:\test\drive_xcopy\out\】内にコピーしています。 ちなみに、、【D:\test\drive_xcopy\in\】フォルダには100個フォルダがあります。 実現したい事は、コピー対象となる100個フォルダがちゃんとコピーされ、 コピー先にすべて確実存在しているかを【コピー元⇔コピー先】とで 1つ1つマッチング処理したいのです。 すべて存在していれば、上記ログファイルに 100フォルダすべてが存在しています。 と書き込み、 1つでも存在していなければ、上記ログファイルに ○○○フォルダがコピー先に存在していません。 それ以外は存在しています。 と書き込むような処理を実現したいのです。 コピー先に存在していないのが複数であれば 下記のようなログメッセージを書き込みたいです。 ログメッセージ例----------------------- ○○○フォルダがコピー先に存在していません。 ×××フォルダがコピー先に存在していません。 それ以外は存在しています。 ログメッセージ例----------------------- For文とIF文をうまく使い、フォルダを変数で順に格納してマッチングするような 作成になると思いますが、難しくて苦戦しています。 方法をご存知の方がいれば、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 宜しくお願い致します。

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • 別のフォルダにコピー

    Visual Basic Express 2012 テキストボックスにファイルをD&Dして、絶対パスを取得して 名前を変更してコピーしています。 D:\test\aaa.txt → D:\test\aaa_abc.txt "cmd /c copy " & filen1 & ".txt " & filen1 & "_abc.txt" filen1は拡張子なしの絶対パスになっています。 末尾に文字を追加してコピーしているのですが、パスの途中に 文字を追加したいです。 D:\test\aaa.txt → D:\test\old\aaa_abc.txt 上記のように別のフォルダにコピーするにはどうしたら良いでしょうか?

専門家に質問してみよう