• 締切済み

Batとタスクスケジュール

スナップショットフォルダを自動コピーしたいです。 nightly.0~29が作成される予定です。 今は、nightly.0~19まで作成され毎日24時に20~29までが作成されていきます。 そこで、月~木はnightlyの番号が一番大きいもの 金曜は、nightlyの番号が大きいものから3つをコピーしたいのです。 robocopyやcopyで、オプションを検索してもさすがにできないので batを組んでやりたいのですが条件指定がどうしてもわかりません。 教えて下さい。 自分の頭では、下記のような流れだと思っていますがどうしてもプログラムにできませんでした。 ーーーーーーーーーーーーーーー cd フォルダを指定 判定 真のフォルダを指定 指定フォルダへコピー ーーーーーーーーーーーーーーー

みんなの回答

  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.1

月木曜と、金曜は別のファイルで良いですよね? 0,1,~~,29だとソートできないので、00,01,~~09,10,~29にリネームします。 月~木曜.bat cd 目的フォルダ for /L %%I in (0,1,9) do if exist nightly.%%I move /y nightly.%%I nightly.0%%I for /F %%F in ('dir /b /on') do set F=%%F xcopy オプション %F% コピー先 金曜.bat cd 目的フォルダ for /L %%I in (0,1,9) do if exist nightly.%%I move /y nightly.%%I nightly.0%%I set N=0 for /F %%F in ('dir /b /o-n') do call :SUB %%F exit /b :SUB set /a N+=1 if %N% leq 3 xcopy オプション %1 コピー先 exit /b

istudent
質問者

お礼

回答ありがとうございます。 数時間考えても形にできなかったのに凄いです、適正や才能の差なのでしょうか。 1行ずつ意味を理解した上で実行させて頂こうと思います。

関連するQ&A

  • Batファイルについて

    複数階層のフォルダにまたがって格納されているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルのファイル名の頭(顧客IDになっている)を拾ってリストにしてあります。移動させたいエクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っています。 現在は複数あるフォルダの中に下記のBatファイルと対象リスト.txtをを入れて1フォルダずつ実行していますが、数十個あるフォルダなので作業が大変です。最上階層で出来るようにしたいのです。 FOR /F %%i in (list.txt) do copy %%i "移動先のパス"

  • batファイルで親フォルダのコピー

    素人で大変申し訳ございません。 batファイルについて教えてください。 ・「batファイルがあるフォルダ」の一つ上の階層にある「hoge」フォルダを  「hoge_bak」にして、「batファイルがあるフォルダ」にコピーしたい ・相対パスで指定したい。 ・コマンドプロンプトではなく、「bat」ファイルで作成したい のですが、batファイルの書き方がわかりません。 ご存知の方、batファイルに書く「ソース」を教えて頂きたいので よろしくお願いします。 ※ネットで参考文献をいろいろ見たのですが、  私の知識が足りなさすぎて実現できませんでした。。。

  • batファイルについてご教授願います。

    私はbatファイルを作成しております。USBメモリー(Eドライブ)からHD内のDドライブにフォルダーごと 上書きコピーをしたいのですが、実行した途端、DOS窓が閉じてしまい上手く動作しません。DOS窓で直接入力すると問題なく正常の動作するのですが・・・。XCOPYやROBOCOPY共に上手くいきません。使い方等いろいろ調べてためしたのですが、現象がすべて「実行した途端にDOS窓が閉じる」になってしまいます。 上手く動作させる為にはどうしたら宜しいでしょうか? 宜しくお願い致します。

  • batによるiniの読み込み。

    宜しくお願いします。 表題の通りなのですが、batファイルでiniを読み込み、それを基にログの出力やデータのバックアップをするには、どのようにすれば良いのでしょうか? バックアップ方法は、"robocopy"です。 以下に、現状の"bat"と"ini"を記載します。(bat内で処理させたい流れです) #####【backup.bat】##### REM iniファイルの読み込み。 REM 確認できなかったら、異常終了する。 IF NOT EXIST backup.ini ( (echo !date! !time! iniファイル[backup.ini]がありません) exit /b 16 ) REM ログの出力先フォルダチェック。 REM 指定のパスに存在しない場合は、作成する。 IF NOT EXIST %LOG%. ( mkdir %LOG% ) REM バックアップ元/バックアップ先フォルダが存在するか確認する。 REM 確認できなかったら、異常終了する。 REM 異常終了の場合、失敗ログを変数"%LOG%"に出力する。 IF NOT EXIST %FOLDER% %BK_FOLDER% ( (echo !date! !time! 対象フォルダ[%FOLDER% %BK_FOLDER%]がありません。) >> %LOG% SET RTN_CD=16 SET GOTO RTN_END ) ) REM robocopy実行 FOR /F "tokens=1,2" %%A in ('type %INI%') do ( set %FOLDER%=%%A set %BK_FOLDER%=%%B ) robocopy %FOLDER% %BK_FOLDER% /IS /MIR /COPYALL REM robocopyによるバックアップが正常終了したか確認する。 REM 正常終了した場合は、成功ログを変数"%LOG%"に出力する。 "ここはまだ分かりませんので、無視しても構いません。 もし大丈夫でしたら、ご教授お願いします。" #####【backup.ini】##### '#ログの出力先 LOG=D:\log '#バックアップ元フォルダ FORDER="M:\testfolder" '#バックアップ先フォルダ BK_FORDER="Z:\bkupfolder" です。 最近、batファイル等について独学で学び始めたばかりのため困っています。 各サイト等を参照しているのですが、どうしても上手く出来ません。 コマンド操作の理解を少しずつでも深めたいので、お手数をかけますが、ご教授を宜しくお願いします。

  • robocopyについて

    robocopyについて バッチコマンド robocopyについてです。 上記コマンドを用いて2008サーバーでバッチを作成したいのです。 条件は以下の通りでファイルをコピーするバッチの作成方法を教えてください。 コピー先にファイルがある場合は上書きメッセージを出さずに実行できるようにしたいです。 また、robocopyはcopyコマンドよりもコピーが早いとも聞いたことがあります。 そのへんも教えていただけるとすごく助かります。 コピー元 sever1\folder1\folder2\aaa.txt コピー先 sever2\folder13\folder4\aaa.txt どなたか詳しい方よろしくご教示願います。

  • BATファイルの記述で

    BATファイルを作成しました。 copy \*.dat \flashdisk\ の行を実行したとき、画面に 「5個のファイルをコピーしました」と表示されます。 この表示をなくしたいのですがどうしたら良いでしょうか? 1行目には「@ECHO OFF」と書いていますが、表示されます。

  • 最新更新日のBATファイルコピーについて。

    最新更新日のBATファイルコピーについて。 どなたか教えてください。 BATを夜間スケジュール化して、あるファイルをコピーするBATを作成したいのです。 条件は (1)コピー元フォルダ C:TEST フォルダ以下に(2)~(4)のファイルがあります。 (2)コピー元ファイル名 AAABBB20101001.txt (3)コピー元ファイル名 AAABBB20101002.txt (4)コピー元ファイル名 AAABBB20101003.txt   **ファイル名の日付部分のみが可変です。 (5)コピー先 D:TESTBKK (6)コピー後ファイル名 AAABKK.txt (4)のみをコピーし(6)のファイルとして上書きコピーするbatを作成したいのです。 自分でも下記のbatを作成したみました。 @ECHO OFF SET LOGPATH=C:\test FORFILES /P %LOGPATH% /M AAA*.txt /C "cmd /c COPY /y C:\test D:\test\AAABKK.txt" /D 0 最新日付のみをコピーしたつもりが、すべてのファイルがAAABKK.txtに追加された 状態で出力されていました。どなたかアドバイスをお願いします。 他に違う作成方法があれば教えてください。

  • (VBA)bat処理の結果がおかしい

    以下の1)から5)までをVBAで行いたいのですが 1)、2)までのコードはネットを参考に作成したのですが  2)の結果が¥tempに書き出されませんでした。   (C:¥に直接書き出される) 原因は何でしょうか ?  (コードの修正をお願いします。) 以下は、行いたい事のイメージ。-------------------------------------------------- 1)指定ディレクトリにディレクトリ(C:\)に保存した   BATファイル(aa.bat)をコピーする 2)指定ディレクトリ内でaa.batを起動する 3)指定ディレクトリーに最初から存在したフォルダーを削除する 4)aa.batによって作成されたフォルダーを最初のフォルダー名に変名する 5)aa.batをコピー先から削除する 例:指定ディレクトリをC:¥temp、aa.batをC:\tempにコピーしたと  C:¥temp¥AA  C:¥temp\AA¥subAA   C:\temp\aa.bat aa.batを\temp内で起動した後で ------>を実施  C:¥AA    ------> 削除  C:¥AA_SUBAA ------> C:\AAに変名  C:\temp\aa.bat -----> 削除 最終的に  C:¥temp\AA --------------------------------------- Sub Test() Dim strPath As String Dim intPathLen As Integer Dim intR As Integer Dim F As Variant Dim obj As WshShell Dim sPath 'Range("A5:F100").Clear ' フォルダーを自由に選べること。 参考:officeTANAKA With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then ' MsgBox .SelectedItems(1) If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 mypath = .SelectedItems(1) Else mypath = .SelectedItems(1) & "\" End If End If End With If mypath = Empty Then MsgBox "フォルダー名の指定をキャンセルしました。": Exit Sub MyName = Dir(mypath, vbDirectory) ' 最初のフォルダ名を返します。 ’Range("A2") = mypath 'コピー先フォルダーの指定 'BATファイルのコピー FileCopy "C:\aa.bat", mypath & "aa.bat" 'batファイルの起動 sPath = mypath & "\aa.bat" Set obj = New WshShell Call obj.Run(sPath, WaitOnReturn:=True) End Sub ------------------------------------------------------------------- 以下は、aa.batの内容です。 for /d %%i in (*) do ( pushd . cd %%i for /d %%j in (*) do ren "%%j" "%%i_%%j" for /d %%k in (*) do ren "%%k" "../%%k" popd rd "%%i" ) -------------------------------------------

  • 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%のところまでは処理は完了しているようなので、最後の行のところで発生しているようです。 何が原因でエラーが発生してしまっているのでしょうか? 宜しくお願い致します

  • エクセルで、batを実行するには?

    エクセルのvbaで、batファイルを実行したいのですが、opentextでは、実行されません。内容としては、FDの中にあるexlファイルをcドライブの指定フォルダにコピーするだけです。