- ベストアンサー
バッチでのファイルのコピー
ファイルのコピーをしたいのですが、 C:\aaa\bbb\???\test.txt と、「bbb」のディレクトリまでは分かるのですが、 必ず「???(任意)」のディレクトリが入ります。 そのディレクトリの下には必ず対象となるtest.txtと いうファイルが存在します。 「???」がなければ、 copy c:\ddd c:\aaa\bbb\test.txt と出来るのですが、「???」のために取ることが出来ません。 どなたか、ご存知の方がいましたら教えて下さい。 宜しくお願い致します。
- berryberryberry
- お礼率100% (5/5)
- その他(プログラミング・開発)
- 回答数5
- ありがとう数5
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
VBスクリプト(WSH)では駄目ですか? CopyFrom = "C:\aaa\bbb\" CopyTo = "C:\" TargetFile = "test.txt" Dim FSO, Fol, SubFol, TargetPath Set FSO = CreateObject("Scripting.FileSystemObject") Set Fol = fso.GetFolder(CopyFrom) For Each SubFol In Fol.SubFolders TargetPath = SubFol.Path + "\" + TargetFile If FSO.FileExists(TargetPath) Then fso.CopyFile TargetPath, CopyTo , true End If Next
その他の回答 (4)
- i-touch
- ベストアンサー率40% (170/415)
私は xcopy c:\ccc\bbb c:\ccc\bak /e/d/h/r/y >>c:\bakup.log みたいにして c:\ccc\bbb 以下のフォルダ、ファイルをバックアップしています。(実際は別ドライブですが) xcopyのオプションは /? で参照してください。 後ろの「 >>c:\bakup.log」は、コピーしたファイルのリストになります。 同名ファイルの上書きが嫌な場合などは、多機能のバックアップ用フリーソフトを探すことをお薦めします。 では!
お礼
ありがとうございます。 フォルダ、ファイルごとコピーする際には xcopyを利用するようにします。 本題とは、ずれますがログのことも対処しないと いけないので参考になりました。
- AE100kai
- ベストアンサー率26% (54/201)
残念ながらディレクトリが分からないとコピーは出来ません。 考えられる方法としては… 1.ファイル検索でCドライブ(bbb)の下のディレクトリから『test.txt』を検索して、入っているフォルダを見付けてそこからコピーする。 2.『bbb』のサブディレクトリ全てを1つずつ見て探す。 3.多分、これが1番簡単かもしれませんが… DOSプロンプトを開き、分かる所までのディレクトリ『c:\aaa\bbb\』から『tree』コマンドで見付ける方法です。 c:>tree \aaa\bbb /f とすれば、『bbb』以下のサブディレクトリとファイルを全て表示します。 スクロールが早過ぎて分からない場合は、『SHIFT+S』でスクロールを止める事が出来ますので、止めて確認してスクロールと繰り返せば探せると思います。
お礼
ありがとうございます。 いくつもの対処法を考えて頂き、そんなことも 出来るんだと大変、参考になりました。
- arukamun
- ベストアンサー率35% (842/2394)
copyコマンドでワイルドカード(*や?)が使えるは、ファイル名の所だけで、ディレクトリには使えません。
お礼
確認して頂き、ありがとうございました。
- densha
- ベストアンサー率29% (333/1123)
>copy c:\ddd c:\aaa\bbb\test.txt 送り側のファイルが指定されていますか? 送り側と受け側の整合性に問題はないですか? DOSから離れて久しいので自信は何のですが・・・
お礼
確認事項、ありがとうございます。 ファイルコピーの場合、送り先に対象となるフォルダが 存在するか確認します。
関連するQ&A
- xcopyで特定のファイルのみをコピーする方法
xcopyもしくはcopyコマンドを使用し、ディレクトリ内の特定のファイル(複数)を コピーするにはどのようにしたら良いのでしょうか? 特定のファイルの数が多すぎるため、一行ずつコマンドを書くのは手間が掛るため、 何か良い方法があれば教えて頂きたいと思います。 excludeオプションを使用すれば特定のファイルを除外できるようですが、 反対の意味の特定のファイルのみをコピーしたいです。 例) c:\test内は以下のファイルがあります。 ・aaa.txt ・bbb.txt ・ccc.txt ・ddd.txt ・eee.txt これらのファイルの内、bbb.txtとddd.txtとeee.txtをコピーしたいです。
- ベストアンサー
- Windows系OS
- バッチファイルでファイルを比較後他のフォルダにコピ
次のようなファイル構成で C:\AAA C:\BBB \ccc \ccc abc.txt abc.txt def.jpg def.jpg \ddd \ddd ghi.txt ghi.txt jkl.jpg jkl.jpg C:AAA\ccc\abc.txt と C:BBB\ccc\abc.txt を比較 C:AAA\ccc\def.jpg と C:BBB\ccc\def.jpg を比較 C:AAA\ddd\ghi.txt と C:BBB\ddd\ghi.txt を比較 C:AAA\ddd\jkl.jpg と C:BBB\ddd\jkl.jpg を比較 全てのファイルに対し比較後C:\CCC(別のフォルダ)に階層を含めコピーしたく for /R %%A in ("C:\AAA") do for /R %%B in ("C:\BBB") do if %%~zA NEQ %%~zB (goto A) :A echo NEQ としましたがループしてしまいました 比較後C:\CCC(別のフォルダ)に階層を含めコピーする方法も含め ご教授をい願いします
- ベストアンサー
- その他(プログラミング・開発)
- dosでサイズを比較して異なるファイルだけコピー
dosで全フォルダ内のファイルサイズを比較して異なるファイルだけコピーしたい 次のようなファイル構成で AAAフィルダ BBBフォルダ cccフォルダ cccフォルダ abc.txt abc.txt def.jpg def.jpg dddフォルダ dddフォルダ ghi.txt ghi.txt jkl.jpg jkl.jpg AAA\ccc\abc.txtとBBB\ccc\abc.txt AAA\ccc\def.jpgとBBB\ccc\def.jpg AAA\ddd\ghi.txtとBBB\ddd\ghi.txt AAA\ddd\jkl.jpgとBBB\ddd\jkl.jpg 拡張子は問わずそれぞれに対するファイルのファイルサイズを比較して 大きくても小さくても異なるファイルだけbbbフォルダ内に上書きコピー したくご教授をお願いします
- 締切済み
- その他(プログラミング・開発)
- ファイルのコピーについて。(script)どなたか教えてください。
ファイルをコピーしたいと思っております。 topディレクトリがAAAでその下のサブディレクトリとファイルがあり、それをBBBというディレクトリにそのままコピーしたいのですができません。ファイルを読み込むまではできたのですが、出力方法がわかりません。どなかか教えてください。 AAA/-- --/1A7/sam.txt --/2B3/sam.txt --/3C5/sam.txt コピー↓↓↓↓↓↓↓↓↓↓↓↓↓ BBB/-- --/1A7/sam.txt --/2B3/sam.txt --/3C5/sam.txt 途中までのsourceです import java.io.*; public class copyfile { public static void main(String[] args) { File file = new File("/AAA/"); File[] fileList = file.listFiles(); for(int i=0;i<fileList.length;i++){ System.out.println(fileList[i].getName()); } } }
- 締切済み
- Java
- 任意のディレクトリ以下に存在するファイル数について
任意のディレクトリ以下に存在するファイルを数える方法について教えて下さい。 現在、あるディレクトリ以下にある特別な命名規則のファイルを探し、リネーム or読み込みを行うような処理を考えています。 例 /* *********************************************************************** */ ☆あるディレクトリ以下に・・・ aaaaa.txt b.log AAA_hogehoge.txt BBB_hogehoge.txt CCC_hogehoge.txt ^^^^^^^^^^^^ここの部分は共通 があったとすると、AAA_hogehoge.txt読み込み→BBB_hogehoge.txt読み込み →CCC_hogehoge.txt読み込み。 ☆あるディレクトリ以下に・・・ DDD_hogehoge.txt のみがあったとすると、DDD_hogehoge.txt→hogehoge.txtへリネーム。 /* *********************************************************************** */ 上記の例のような事を考えています。その際「任意のディレクトリ以下に存在する 特定パターンに合致するファイル数(*hogehoge.txtで掛かるファイル数)とファイル名が 欲しいのです。 何か良い方法、使える関数等がありましたら教えて下さい。 なおOSはLinux、ソラリス、コンパイラはgccを考えています。
- ベストアンサー
- C・C++・C#
- 複数のファイルコピー
初めて質問をいたします。 VBAの勉強中なのですが、複数のフォルダの中にある特定のファイルを、別のフォルダにコピーをしたいのですが、どのようにしたら良いのでしょうか。 例えは、C:\aaa\bbb\cccの中へ C:\aaa\bbb\ddd\eee\fff\Jggg.xls、 C:\aaa\bbb\ddd\hhh\iii\Jjjj.xlsをコピーする感じです。 どのようにしたら、可能でしょうか。 C:\aaa\bbbフォルダ以下全てのフォルダの中から、「J」の付くxlsファイルを全てコピー等出来るのでしょうか。 よろしくお願いします。
- 締切済み
- Visual Basic
- 複数フォルダ内のファイルを一括コピーする方法
環境はWindows7です。 下記構成のファイルを一括で特定のフォルダにコピーする方法を探しています。 C\aaa\111.txt C\aaa\112.txt ・・・ C\bbb\121.txt C\ccc\33.txt ------------------ ⇒C\ddd 配下へコピーしたい 方法(1):F3で「.txt」で検索してヒットしたものを一括でコピーする。 方法(2):.batファイルを使ってやる。 方法(2)について、下記のように書いてみました。 REM 複数フォルダーの不特定多数のファイルを特定フォルダーにコピーする pause cd %~dp0 dir /b No* >list.txt for /F %%i in ( list.txt ) do copy /y %%i\*.txt 特定フォルダー pause カレントディレクトリにある複数フォルダ名をlist.txtに出力し、 それをまた読み込んでforを使って特定フォルダーにコピーする。 これだと同名のファイルがあった場合でも問答無用でどんどん上書きされてしまいます。 「コピーするが両方のファイルを保持する」状態にしたいんですが、 何か方法はないでしょうか・・・?
- 締切済み
- その他(ITシステム運用・管理)
- ディレクトリをコピーするツールを作ってますけど、うまくいきません。
ディレクトリをコピーするツールを作ってますけど、うまくいきません。 何方か教えてください! 内容:1、「~/???.tmp」というディレクトリを検索し指定ディレクトリにコピーする。 2、「~/???」というディレクトリも合わせて指定ディレクトリにコピーする。 3、 指定ディレクトリから2階層下にある「aaa」ディレクトリ直下を対象とする。 4、 コピーしたディレクトリを表示する。 使い方:./cptmpDir.sh path1 path2 [-c] 引数: path1 は対象ディレクトリ path2 はコピー先ディレクトリ -c 指定されていればディレクトリのコピーを行う。 例え以下のようなディレクトリがあるとする。 home/ccc/bbb/aaa/abc.tmp home/ccc/bbb/aaa/abc home/ccc/bbb/aaa/cba home/ccc/bbb/aaa/ddd/efg.tmp home/ccc/bbb/aaa/ddd.tmp ./cptmpDir.sh /home /var/tmp [-c] を実行したら home/ccc/bbb/aaa/abc.tmp home/ccc/bbb/aaa/abc home/ccc/bbb/aaa/ddd.tmp が/var/tmpにコピーされるのが正常の働き。 私が書いたシェルは 内容1、3、4、はできたけれども 2、ができてません。 だからhome/ccc/bbb/aaa/abcがコピー対象がになっています。 以下は私が書いたシェルである。 #!/bin/ksh if [[ $# -lt 2]] then echo "usage: $0 path [-c]" exit 1 fi path2=$2 copydir=0 if [[ $3 = "-c" ]] then copydir=1 fi find $1 -maxdepth 3 -mindepth 3 -type d -name "aaa" | ¥ while read d do find $d -maxdepth 1 -mindepth 1 -type d -name "*.tmp" | ¥ while read a do if [[ $copydir -eq 1 ]] then cp -r $a $path2 echo "cp" "${a#*/}" else echo "${a#*/}" fi done done よろしくお願い致します!。 home/ccc/bbb/aaa/abcもコピーされるように!!!
- ベストアンサー
- その他(プログラミング・開発)
- バッチファイルで「,]区切りの文字を抜き出したい
現在、バッチを作成しているのですが、txtファイルからの文字の抜き出しがうまくいきません。 findstr /b "aaa" C:\tmp\test.txt 上記で行毎では抜き出せるのですが、それから[ , ]区切り毎の抜き出し方がわかりません。 [test.txt] aaa,bbb,ccc,ddd eee,ffffff,ggggg,hhhh 下記のようにそれぞれ変数に代入したいと考えております。 aaaで実行する場合。 hoge1=aaa hoge2=bbb hoge3=ccc hoge4=ddd eeeで実行する場合。 hoge1=eee hoge2=fffff hoge3=ggggg hoge4=hhhh 変数への代入はfor文を使用しようと考えております。 お知恵をよろしくお願いいたします。
- ベストアンサー
- Windows XP
- バッチでファイルをリネームして別フォルダ移動に行き詰まり・・・
バッチ(コマンドプロンプト)でファイルをリネームして別フォルダに移したいのですが行き詰ってしまったのでどなたかご教示ください。当方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
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございます。 WSHのことは全く判らなかったので 大変、参考になりました。 無事、WSHで解決することが出来ました。