- 締切済み
バッチファイル作成について
フォルダにファイルが一つ入っている状態です。このファイル入りのフォルダを連番で1000個までコピーするためのバッチファイルはどのように作成すればよいでしょうか。 できれば参考となる記載をいただけると幸いです。 宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
>'if"1"は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。と表示されます。 回答をコピペしていないので、タイプミスですね。 if の後には半角空白が必要です。 0001 から 1000 ということなので、 set INP=コピー元フォルダ set N=10001 :LOOP if "%N%" gtr "11000" goto EXIT xcopy %INP% %INP%%N:~1,4% /e /h /i set /a N+=1 goto LOOP :EXIT pause
- yambejp
- ベストアンサー率51% (3827/7415)
vbsでやるとこんな感じ hogeディレクトリにあるhogehogeディレクトリを fugaディレクトリにコピーする。 その際hogehoge0001から連番で1000まで copyfloder.vbsという名前で保存してダブルクリック 'ここから set fs = CreateObject("Scripting.FileSystemObject") orgdir="C:\hoge\hogehoge" bn=fs.getbasename(orgdir) newdir="C:\fuga" for i=1 to 1000 num=right(10^10+i,4) fs.copyfolder orgdir,newdir&"\"&bn&num next 'ここまで
- satoron666
- ベストアンサー率28% (171/600)
@echo off set /p INP="フォルダ場所を指定してください:" echo %INP% set /a N=1 pause :LOOP xcopy %INP% %INP%%N% /d /e /h /r /y /i if "%N%"=="1001" (goto EXIT) set /a N=N+1 goto LOOP :EXIT pause --------------- ほんの少しだけ改良してみました。 私の環境ではさっきのも、今のも上手くできているため 原因は分かりません。
- satoron666
- ベストアンサー率28% (171/600)
説明を間違えておりました。 コピーしたいフォルダを適当なフォルダの中に置きます。 新しいフォルダ | ---コピーしたいフォルダ | | | --ファイル | ---フォルダコピー.bat (バッチファイル) そして、起動した後にフォルダを選択してくださいと出るので TABを押し、「コピーしたいフォルダ」を選択します。 そうすると上手くいくと思います。 ファイルを選択してしまうと、コピーは出来ません。
補足
ご回答いただき、ありがとうございます。 試してみたところ、コピーしたいフォルダをTABで指定した後、続行するには何かキーを押してください。。。と出ましたのでenter押すと、フォルダは受け側のファイル名ですか、またはディレクトリ名ですかと表示されます。ただ、いずれを選択しても'if"1"は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。と表示されます。 やはりソースの記載に誤りがあるのでしょうか。
- satoron666
- ベストアンサー率28% (171/600)
@echo off set /p INP="フォルダ場所を指定してください:" echo %INP% set /a N=1 pause :LOOP xcopy %INP% %INP%%N% /e /y /R /I if "%N%"=="1001" (goto EXIT) set /a N=N+1 goto LOOP :EXIT pause これを適当な名前で保存し、拡張子は.batで保存してください。 コピーしたいファイルがある場所と同じフォルダに置き、 フォルダ名を入力 (Tabキーでも候補は出てきます) http://www.geocities.co.jp/SiliconValley-SanJose/1227/batfor.html Nというのは、連番の番号です。 LOOPの中で、ファイルをコピーしています。 xcopy ファイル名 コピー先ファイル名 その他オプション コピー先のファイル名は、%INP%%N% にしているので、 ファイル名1 と入力されていきます。 ファイル名の前に連番をおきたいなら、%N%%INPでしょうね。 とりあえず、参考まで。 調べてみれば方法はたくさんありますよ…
補足
ご回答いただき、ありがとうございます。 試してみましたが、以下のように表示され上手くいきませんでした。Nに値がはいっていないということでしょうか。 サイクリックコピーは実行できません 0個のファイル 'If"1"は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。
- yambejp
- ベストアンサー率51% (3827/7415)
連番の定義は? \hoge\fuga.txt があったとき hoge0、hoge2・・・hoge999なのか hoge1、hoge2・・・hoge1000なのか hoge0001、hoge0002・・・hoge1000なのか またコピー先のフォルダは同じなのか? コピー先フォルダに競合するフォルダ名がないという前提でいいのか?
補足
連番は、できれば0001から1000だとありがたいです。何もないフォルダ内で作成するのでフォルダ名は競合しないとおもっています。 コピー先は同じかということですが、できれば任意の同じフォルダ内に1000個のフォルダを作りたいです。 伝わりますでしょうか。
補足
修正いただいたものを試すと、先ほどと同じifのエラーは出るものの、フォルダとファイルはコピーされました。 ループが機能しておらず、1000個に留まらず、永遠にコピーし続けますが、手動で止めれば目的は達せられました。 Ifがエラーになるということで、その部分の記載がおかしいのでしょうか。 とりあえずは作成できました。ありがとうございました。