複数のファイルコピー方法とは?

このQ&Aのポイント
  • ある拡張子以外のファイルを連番をつけて複数コピーする方法を知りたい。
  • Webページを参考に作成したバッチが正常に動作しない。
  • ディレクトリには、aaa.jpgとbbb.gifの2種類のファイルが存在している。
回答を見る
  • ベストアンサー

数種類のファイルコピーについて

お世話になります。 ある拡張子以外のファイルを連番をつけて複数コピーしたいと考えています。 Webページを参考に次のバッチを作成しましたが正常に動作しません。 ディレクトリには、aaa.jpg bbb.gif2種類のファイルが存在しています。 お知恵をお貸しいただければ幸いです。 ======================================================= echo off set n=0 SET EXCLUDE_FILE_EXT=*.bat; .txt FOR %%F IN (%SRC_DIR%\*) DO ( IF /I NOT "%%~xF"=="%EXCLUDE_FILE_EXT%" copy "%%F" ) exit /b :copyFile if "%n%"=="10" (goto :finish) set /a n=n+1 set /a exp=10+n copy %1 %~n1%exp:~1%%~x1 goto :copyFile :finish set n=0 goto :EOF =====================================================

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

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

IF /I NOT "%%~xF"=="%EXCLUDE_FILE_EXT%" copy "%%F" の部分を、 IF /I NOT "%%~xF"==".BAT" IF /I NOT "%%~xF"==".TXT" call :copyFile "%%F"

QA-Linux
質問者

お礼

ご連絡が遅れて申し訳ございませんでした。 大変助かりました。 ありがとうございました。

関連するQ&A

  • バッチファイルの変数について

    以下のバッチファイルを作成して実行したのですが、PATH_NAMEの変数が 設定されず、ファイルコピーがされません。 どのように、コードを記載すれば良いのでしょうか。 ご教授願います。 REM コピーするファイル数を設定 SET /a FILE_NUM = 2 REM コピー元のパスを設定 SET PATH_P1=C:\Copy01.txt SET PATH_P2=C:\SAMPLE\Copy02.txt REM 上記で設定したファイルを順番にC:\TEST\へコピーする SET /a N=1 :LOOP SET /p PATH_NAME = PATH_P%N% copy %PATH_NAME% C:\TEST\ if "%N%"== "FILE_NUM " (goto EXIT) SET /a N=N+1 goto LOOP :EXIT

  • バッチファイルに日付(ミリ秒まで)をつけたい

    OS: Windows XP あるソフトを使っており、20分おきにexcelシートが自動的に デスクトップ上に「full01.xls」という名前で記録されます。 そこで上書きされないようにするためにバッチファイルを使ってリネー ムするようにしました。 そこで質問ですが新しいexcelシートが出来るたびに出来た時間がわか るようにしたいです。 どのようにすればよいでしょうか? またそれをどこに挿入すればよいか教えていただきたいです。 よろしくお願いします。 @echo off :TOP rem 空きファイル名を検索 set /a N=2 :SEARCH rem 2~9はfull0x, 10以上はfullxxにする set F=full0 if %N% GTR 9 set F=full if not exist %F%%N%.xls goto WAIT set /a N=N+1 goto SEARCH rem full01.xlsが生成されるのを待つ :WAIT echo Search full01.xls :LB1 rem Sleep if not exist full01.xls goto LB1 echo Found full01.xls echo New File = %F%%N%.xls echo Waiting for file write... rem ファイルの書込動作が完全に終るまで待つ set /a M=1 :WAIT2 if "%M%"=="9999" goto RENAME set /a M=M+1 goto WAIT2 :RENAME echo Rename ren full01.xls %F%%N%.xls echo Done. rem ずっと繰り返し goto TOP

  • フォルダー内の複数ファイル名を一括で変名するbat

    フォルダー内の複数ファイル名を一括で変名するbatを教えてください。 batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。 以下のような形式です。  No1 aaaa bbbb [com : *********].zip を  No1 aaaa bbbb.zip に変名する。   (*******は任意の文字列) 例えば、 No1 aaaa bbbb [com : taken2110221100014].zip であれば No1 aaaa bbbb.zip に変名する。 以下が参考になりそうなので https://oshiete.goo.ne.jp/qa/9263608.html 記事中の助言を元に以下のようにコードを修正してみましたが うまく処理できませんでした。 bat(test,bat,test2.bat)のどこを再修正すれば希望の処理ができますか ? 希望は、下記ですが 「batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。」 batを修正してもこのbatでは、D&Dで処理することは可能で無い場合は アドバイス又は他の参考なりそうなURLを紹介ください。 '------------------------------------------ rem test.bat echo off for /F "delims=" %%f in ('dir /*.mp4') do call :sub "%%f" exit /*.mp4 :sub set fname=%~1 set n=0 :loop call set c=%%fname:~%n%,1%% set /a n=n+1 if "%c%"=="" goto :EOF if "%c%"=="[com" goto break goto loop :break set /a n=n-1 set ext=%~x1 call set newname=%%fname:~0,%n%%% call set newname=%newname%%ext% if "%newname%"=="" goto :EOF if "%newname:~0,1%"=="." goto :EOF ren "%fname%" "%newname%" goto :EOF '-------------------------------------- rem bat2.bat for /F "tokens=1* delims=[com" %%F in ('dir /b *.mp4') do echo move %%F[com%%G %%F.mp4 '--------------------------------------

  • ファイルのコピーについて

    $file = './hoge/index.html'; $file_to = './hoge/index2.html'; //コピー成功 ↓ $file_to = './hoge/php/index.html'; //コピー失敗 if(copy($file, $file_to)){ echo "コピーしました。:"; } else{ echo "コピーに失敗しました。:"; } 同じ階層にコピーファイル作成は成功するのですが、 ディレクトリを下げた階層にコピーファイルを作成しようとすると失敗してしまいます。 パーミッションの設定がわるいのか権限がないのか、よくわかりません。 エラー内容 Warning: copy() [function.copy]: SAFE MODE Restriction in effect. The script whose uid is 10124 is not allowed to access 教えて下さい。お願いします。

    • 締切済み
    • PHP
  • ファイルのコピー

    ファイルのアップロードプログラムを作成しています。 HTML側で<input type="file" name="UserFile"> とし、アップロードボタンを押すとphp側で値を受け取るようなプログラムにしています。 値はうまく渡っているのですが、コピーができません。 コピーするPHPは以下のようなプログラムです。 $file = tempnam("/tmp","upload_"); if (copy($all_data['UserFile'],$file)) { print "ファイルコピー成功。 $all_data['UserFile'] -> $file<BR>\n"; } else { print "ファイルコピー失敗。 $all_data['UserFile'] -> $file<BR>\n"; } エラー内容は Warning: Unable to open 'percent.txt' for reading: No such file or directory となってます。 $all_data['UserFile']にはpercent.txtです。 どなたか、お分かりになる方がいましたら、 ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • ファイルコピー

    「ルートディレクトリ内の全てのファイルの中でファイル名に"1111"及び"2222"と言う文字列が含まれるファイルを./333/444ディレクトリに同じファイル名が無ければコピーする」 というスクリプト(下記qqq.php)を作りましたが、 「ルートディレクトリ内の全てのファイルの中でファイル名に"1111"及び"2222"と言う文字列が含まれるファイルの中で最もファイル更新時刻が新しいものだけを./333/444ディレクトリに同じファイル名が無ければコピーする」 と変えたいのですがどうも上手くいきません。 この『・・・文字列が含まれるファイルの中で最もファイル更新時刻が新しいものだけを・・・』の部分につきまして、ご教授ください。 スクリプトを記載していただけるととても助かります。 どうか宜しくお願いいたします。 ********************* qqq.php <?PHP if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/1111/",$file)) { if(preg_match("/2222/",$file)) { $to="./333/444/".$file; if(!file_exists($to)) copy("./".$file,$to); } } } closedir($dir); } ?>

    • ベストアンサー
    • PHP
  • ファイル名の一部に年月日が入っているファイルを、指定日以前のもののみ一

    ファイル名の一部に年月日が入っているファイルを、指定日以前のもののみ一括削除する方法を教えてください。 上記の目的を果たすためにバッチファイルを作成しようと思っているのですが、当方プログラミング全般に関して全くの素人でして、Web検索で見つけたものを切り貼りして無理やり作ったところ、思うような結果になりませんでした。 (BCPフォルダ直下に当該ファイルを置いた場合削除できたが、サブフォルダのファイルは削除できない) どうもあと一歩で完成しそうな気がするので、できればこのバッチファイルを元に修正していただけると嬉しいのですが、VBScript等で作成した方が簡単なのであればバッチファイル以外の方法でも構いません。 宜しくお願い致します。 <予め決められているルール(変更は不可)> (1)2010年9月2日21時21分55秒14に作成されたファイルは、「201009」フォルダ配下に「ABC_DEF_GHI_2010090221215514.txt」と「ABC_DEF_GHI_2010090221215514.log」という名前がつけられる。 (2)1日1回バッチファイルを起動し、指定日以前に作成したファイルを全て削除する。 <作成したバッチファイル(DEL.bat)> @echo off cd ..\BCP REM --------------- REM 日付のn日前を求める REM 引数1・・・n(数値) REM 引数1がないときは1(前日) REM 引数2・・・YYYY/MM/DD 形式 REM 引数2がないときは本日とする。 REM --------------- if "%1"=="" ( set n=5 ) else ( set n=%1 ) if "%2"=="" ( for /F "tokens=1" %%a in ('date /t') do set orgdate=%%a ) else ( set orgdate=%2 ) :年月日の分割 set yy=%orgdate:~0,4% set mm=%orgdate:~5,2% set dd=%orgdate:~8,2% set count=0 :Repeat :月日の数値化(8進数対策) set /a mm=1%mm%-100 set /a dd=1%dd%-100 set /a dd=%dd%-1 if %dd% NEQ 0 goto end :月跨り処理 set /a mm=%mm%-1 if %mm% EQU 0 set mm=12&&set /a yy=%yy%-1 set /a dd=%dd%+31 if "%mm%"=="2" set /a dd=%dd%-3 if "%mm%"=="4" set /a dd=%dd%-1 if "%mm%"=="6" set /a dd=%dd%-1 if "%mm%"=="9" set /a dd=%dd%-1 if "%mm%"=="11" set /a dd=%dd%-1 :閏年処理 :4で割り切れるか? set /a u=%yy% %% 4 if not %u%==0 goto end :100で割り切れて、400で割り切れないか? set /a u=%yy% %% 400 set /a v=%yy% %% 100 if %v%==0 if not %u%==0 goto end :2月か? if %mm% EQU 2 set /a dd=%dd%+1 :END set mm=0%mm% set mm=%mm:~-2% set dd=0%dd% set dd=%dd:~-2% set /a count=%count%+1 set DT=ABC_DEF_GHI_%yy%%mm%%dd% IF %count% NEQ %n% goto Repeat for %%F in (*.txt *.log) do if %%F LSS %DT% del /s %%F :EXIT <フォルダ構造> 添付画像をご参照下さい。

  • Excel VBA連続コピー、貼付処理について

    特定のフォルダ内に格納されている複数のExcelファイルの「sheet1」シートのデータを 所定のExcelファイルにコピー&ペーストしたいのですが、うまくいきません。 (貼付先のファイルを閉じようとするとエラーが発生します。) どうすればできるようになるでしょうか? ご教授の程よろしくお願いいたします。 -------------------------------------------------------------------- Sub copy_test() Dim myPath As String Dim copyFile As String Dim pasteFile As String Dim n As Long myPath = "C:\copy\" copyFile = Dir(myPath & "*.xls*") pasteFile = "C:\paste\paste_data.xlsx" n = 2 Do Until copyFile = "" Workbooks.Open Filename:=myPath & copyFile Workbooks(copyFile).Worksheets("sheet1").Range("A2:L201").Copy Workbooks.Open Filename:=pasteFile 'Workbooks(pasteFile).Worksheets("paste_data").Active Range("B1").Select Selection.End(xlDown).Select Selection.End(xlToLeft).Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste ActiveWorkbook.Save Workbooks(pasteFile).Close False Application.CutCopyMode = False Workbooks(copyFile).Close False n = n + 999 copyFile = Dir() Loop End Sub ---------------------------------------------------------------------------------

  • バッチファイルの使い方について

    このサイトで、両面スキャンした画像ファイルを表面と裏面を別々のフォルダに振り分ける方法を質問して、バッチファイルを使う方法を教えてもらったのですが、上手くいきません。バッチファイルを使うのは初めてなので、どこかまずいところがあるのかと思います。 教えていただいた下記のものそのままでバッチファイルを作り、画像ファイル(jpg)を格納したフォルダに置いてダブルクリックすると、「1」「2」のフォルダができるだけで、画像ファイルは移動せず、2つのフォルダは空のままです。 どこを直せばよいのか教えてください。よろしくお願いします。 set N=1 mkdir 1 mkdir 2 for %%I in (*.jpg) do call :sub %%I goto :EOF :sub move %%I %N% set /a N=3-N goto :EOF

  • PHP で動的ファイル出力

    PHP 猛勉強中です、またお世話になりますm( __ __ )m ドキュメントルート外に置いたイメージファイルを HP からリンクして表示できるように readfile 関数を使った PHP ファイルを作成しようと思っています。 readfile.php に対して URL クエリーでhttp://hoge/readfile.php?name=hage&ext=jpg のような感じで呼び出したいと思っています。 ※ name はファイル名、 ext は拡張子です。 [readfile.php] <?php $_name = ""; $_ext = ""; if(isset($_GET["name"]) === true && isset($_GET["ext"]) === true){ // null byte 対策 $_name = delete_nullbyte($_GET["name"]); $_ext = delete_nullbyte($_GET["ext"]); // ディレクトリトラバーサル対策 $_name = str_replace(".", "", @htmlspecialchars($_name, ENT_QUOTES, "UTF-8")); $_ext = str_replace(".", "", @htmlspecialchars($_ext, ENT_QUOTES, "UTF-8")); }else{ exit(); } $_file_path = "/home/xxx/img/" . $_name . "." . $_ext; // ファイル存在確認 if(file_exists($_file_path) === false){ exit(); } // MimeType 取得 $_ext_type = substr($_file_path, -3); $_mime_type = ""; if(strcasecmp($_ext_type, "jpg") === 0){ $_mime_type = "image/jpeg"; _out_file($_file_path, $_mime_type); }else{ exit(); } ///////////////////////////////////////////////// // ファイル出力 function _out_file($file_path, $mime_type) { // ファイル名取得 $_fname = @basename($file_path); // ファイルストリーム取得 header('Content-Type: ' . $mime_type); header("Content-Disposition: inline; filename='" . $_fname . "'"); readfile($file_path); } ///////////////////////////////////////////////// // null byte 除去メソッド function delete_nullbyte($str) { if(is_array($str) === true){ return ""; } return str_replace("\0", "", $str); } ?> 色々作業を進めるうちに「null byte 攻撃」や「ディレクトリトラバーサル攻撃」などの言葉が耳に入ってきてセキュリティ的に不安を感じています。 自分なりに調べて上記のようなコーディングをしましたが、果たして問題が無いのか、それとももっとたくさん考えなくてはならないのか、先輩方の意見が聞きたく質問させていただきました。 よろしくお願いしますm( __ __ )m

    • ベストアンサー
    • PHP