バッチファイルでフォルダのコピー・名前の変更・テキスト置換がうまくいかない

このQ&Aのポイント
  • バッチファイルを使用して特定のフォルダ内のファイル・フォルダを含めて、同じ場所にコピーし、名前を変更・テキスト置換したい。しかし、コピーをしようとするとファイルが見つからないというエラーが発生してしまう。
  • バッチファイルを使ってフォルダのコピー・名前の変更・テキスト置換を行いたいが、コピーに失敗してしまう。指定したフォルダが見つからないというエラーが出てしまう。
  • バッチファイルでフォルダのコピー・名前の変更・テキスト置換を試みているが、コピーがうまくいかない。指定したフォルダが存在しないため、エラーが発生している。
回答を見る
  • ベストアンサー

バッチファイルで、コピー

ある一つのフォルダをその中のファイル・フォルダを含めて、 同じ場所にコピーし、名前を変更・テキスト置換したいのですが、うまくいきません。 ・フォルダを元フォルダと同じ場所にコピー ・コピーしたものに対し**01といった任意のファイル名に変更 ・コピーしたフォルダ中のテキストに文字列の置換を行う(入力) 以下のように途中までですが作成したのですが、 コピーをしようとするとファイルがみつかりません出てきてしまいます。(指定したいのはフォルダなのですが) どうすればうまくいくのでしょうか。 @echo off echo コピー元入力 set /p Copymoto=入力: echo コピー先入力 set /p Copysaki=出力: xcopy "%%Copymoto%%" "%%Copysaki%%" /H /K /V /S /E

  • kkk311
  • お礼率61% (145/235)

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

  • ベストアンサー
  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.1

多分ですが、ファイルが見つかりませんと出ているのは、構文ミスだと思われます 誤=xcopy "%%Copymoto%%" "%%Copysaki%%" /H /K /V /S /E 正=xcopy "%Copymoto%" "%Copysaki%" /I /H /K /V /S /E 以下2点のコマンドを学んでいけば目的の結果にたどり着けます あと3ふんばりぐらいです、がんばってください。 >・フォルダを元フォルダと同じ場所にコピー XCOPY コマンド=ファイル及びディレクトリの複写 >・コピーしたものに対し**01といった任意のファイル名に変更 REN コマンド=ファイル名及びディレクトリ名の変更 >・コピーしたフォルダ中のテキストに文字列の置換を行う(入力) 入力と書いてあるから、これはいいのかな?もし自動化させようと考えているならば テキスト内の文字置換は通常のBATコマンドでは出来ないと思います そういったフリーコマンド集を手に入れれば可能だと思いますが発見できず ※昔ならそういった色んなコマンド系のフリーコマンドが提供されてたのですが、今は見かけることがなくなったなぁ 参考先:DOSコマンド一覧

参考URL:
http://hisa-net.ddo.jp/php/dos/dos_command.php
kkk311
質問者

お礼

ありがとうございます! 参考にさせていただきます。 文字列の置換はバッチファイルだと難しいんですね。 アプリケーションを使用できないか考えてみます。

関連するQ&A

  • バッチファイルで悩んでいます。

    プログラミング初心者です。 御教授の程、宜しくお願いします。 以下のプログラムは 1.ユーザーからフォルダをドラッグ・アンド・ドロップしてもらう。 2.ユーザーに日付を入力してもらう(yyyymmdd方式) 3.ユーザーに下記の2つから選んでもらう。   1.入力した日付よりも前に更新されたファイルを表示   2.入力した日付よりも後に更新されたファイルを表示 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 ------------------------------------------- list.bat echo off set /P YYYYMMDD=日付を入力してください(YYYYMMDD): :loop echo ---------------------------------------------------- echo 入力した日付よりも前に更新されたファイルを表示 - [1] echo 入力した日付よりも後に更新されたファイルを表示 - [2] echo ---------------------------------------------------- set /P chk= 1 か 2 を入力してください: if not defined chk goto loop if %chk% EQU 1 set op=LSS&goto listup if %chk% EQU 2 set op=GTR&goto listup goto loop :listup echo. for /R %1 %%F in ( *.* ) do call :sub "%%~fnxF" %%~tF cmd /k :sub set fdate=%2 set fdate=%fdate:/=% if %fdate% %op% %YYYYMMDD% echo %2 %3 %1 goto :EOF このプログラムに関しまして、 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 をコマンドプロンプト上にではなく、エクセルファイル上に変更したいです。 教えて頂きますと助かります。 それでは、宜しくお願い致します。

  • バッチファイルの見方について教えて下さい。

    バッチファイルを選択⇒右クリック⇒編集とすると テキストが表示されるのですが、 どういう事を書いてるのかよくわかりません。 解る方、教えて下さい。宜しくお願いします。 【pingnum.batの時】 ping 198.105.232.1 ping 198.105.232.6 @echo off echo ... echo Click the Help window to continue with the Internet troubleshooter. 実行するとdos画面でPingが実行されるのですが @echo offから下の部分はどういった意味でしょうか? echo Click the Help window to continue with the Internet は単なるメッセージ?かと思うのですが・・・。 また、下記についてもお願いします。 copyコマンドで指定したファイルを他のドライブに パスをきる時は、\\を付け加える?? A>TYPE BACK.BAT ECHO OFF CLS ECHO バックアップ ECHO ON XCOPY C:\WINDOWS\デスクトップ\コピー元\data\* C:\WINDOWS\デスクトップ\コピー先\data /E/C/H/R/Y ECHO OFF ECHO 完了しました

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

    いつも大変御世話になっております。 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文をうまく使い、フォルダを変数で順に格納してマッチングするような 作成になると思いますが、難しくて苦戦しています。 方法をご存知の方がいれば、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 宜しくお願い致します。

  • バッチファイル 検索してコピーするには

    cドライブのaaaフォルダ内にあるエクセルファイルをサブフォルダ内も検索し、Eドライブにコピペするコードを見つけました。 実行してみますと、aaa内に含まれるサブフォルダ内にあるエクセルファイルはコピペされますが、 aaaの直下にあるエクセルファイルはコピぺされません。 これもコピペされるようにするには、どうすれば良いか教えてください。 @echo off set Folder1=C:\aaa rem ・コピー先 set Folder2=E:\ set File=*.xls cd /d %Folder1% for /d /r %%a in ( * ) do copy "%%a\*%File%*" "%Folder2%" pause

  • xcopyでのバッチコピー方法でコピーできない

    こんにちは。 xcopyを使って、ネットワーク上のファイルを、同じくネットワーク上の別フォルダにコピーしたいと思っています。 ローカルで下記のコードを書きました。 xcopy C:\abc.txt D:\ これは問題なく、Dドライブ直下にデータがコピーできました。 次に、ネットワーク上のあるファイルを指定してコピーするコードを書きました。 xcopy \\mynetwork\abc.txt \\mynetwork\something\ or xcopy "\\mynetwork\abc.txt" "\\mynetwork\something\" これは一応はバッチ画面は起動されるのですが、正しくコピーをできませんでした。つまりコピーは失敗におわりました。 何が間違っているでしょうか? やりたい事は、単一のテキストファイルを、ある特定のフォルダにコピーして、既に同じファイル名があれば上書きするといったことをやりたいです。 よろしくお願いいたします。

  • MS-DOSバッチファイルで

    度々ご教授お願い致します。 以下のようなMS-DOSバッチファイルで、xcopy コピー元 コピー先のようにしたいのですがこれではうまくいきません。 どのようにしたら良いでしょうか。宜しくお願い致します。 FOR /F "eol=; tokens=1,2 delims=, " %%i in (c:\a.txt) do (@echo %%i %%j) xcopy %%i %%j /s /o /y >> (@echo %%i %%j)

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

    バッチファイルについて バッチファイルの勉強をしておりますが、以下のバッチで 分からない箇所があります。 @echo off copy C:\bin\set.txt set.txt | find /v "コピー" echo ユーザー名を入力してください echo 入力後、Ctrlキーを押しながらZキーを押した後、Enterキー copy con inp.txt | find /v "コピー" copy set.txt+inp.txt setinp.bat | find "○○" call setinp.bat echo ユーザー名は%INP%と入力されました! del setinp.bat set.txt inp.txt <<不明箇所>> まず、C:\bin\set.txt』は set INP= とだけ書いたファイルです。 copy C:\bin\set.txt set.txt | find /v "コピー" ですが、|find /v"コピー"はなんのためにやっているのでしょうか?? find /vを調べてみると、指定した文字列を含まない行の内容をすべて画面に表示します。 と記載されていますが・・・・このバッチでは一体なぜ最初にいるのでしょう?? copy con inp.txt | find /v "コピー" ですが、コンソールから入力させた文字列をinp.txtに保存しているらしいのですが、 そのあとに、また、|find /v"コピー"がでてきますが、なぜでしょう??なにを したいのでしょう?? さらにまた、copy set.txt+inp.txt setinp.bat | find "○○"が出てきますが、 ここでなぜまた意味不明な、|find"○○"がでてくるのでしょう?? さらにさらに、バッチを実行してみると、set.txtの中身にはコンソールから 入力した文字は何も記載されていない、そして、inp.txtやsetinp.txtという テキストファイルも、どのフォルダにも出来ていません。 最後の行のdel setinp.bat set.txt inp.txtを消して実行してみても同じです。 なぜでしょう?? このバッチの動き、例としての意図が全く分かりません。。。。 この例題が悪すぎるのか、私の頭がわるすぎるのか・・・・ ちなみに、上記バッチは、http://www.geocities.co.jp/SiliconValley-SanJose/1227/batinput.html のサイトのものです。 どなたかご教授願います。。。一週間悩みましたが、まったく理解できない状態です。。。

  • バッチファイル 別ファイルにリストしてあるファイルをコピーしたい

    バッチファイルで、ファイル名前をリストしてあるの別ファイルを参照して、リストの名前のファイルを任意のフォルダにコピーしたいです。 ●条件 ・コピー元/コピー先は固定でよいです。 ・できれば、コピー元のサブフォルダのファイルも対象にしたいです。 (この場合、リストにもxxx\○○○.txt のように記述) 「for」コマンドを使うのでしょうか? 宜しくお願いいたします。

  • DOSのバッチファイルについての質問です。

    DOSのバッチファイルについての質問です。 フォルダ内のファイルネームを一括変更したいと考えています。 変更したい文字がたくさんあり、その都度インプットして処理したいと思い 下記のようなバッチを組んだのですが上手く動きません。 何かいい方法があればご教授下さい。よろしくお願いします。 echo off SET /P word= for %%a in (*%word%*) do call :sub "%%a" exit /b :sub set fname=%~1 set fname=%fname:%woad%=ああ% ren %1 "%fname%" goto :EOF

  • バッチファイルで変数の内容変更

    以下のバッチファイルで,10回目のループで,ファイル名を入力している変数を 「out.txt」と変更したいのですが,変更前の「in.txt」と 出力されてしまいます。 どのように対処すれば宜しいでしょうか? よろしくお願いします。 @echo off set FLN=in.txt for /L %%N in ( 1 , 1 , 10 ) do ( echo %%N if "%%N" equ "10" ( echo 変更します set FLN= set FLN=out.txt ) echo %FLN% ) @echo on

専門家に質問してみよう