バッチファイルでファイルを置換
あるバッチファイルをダブルクリックすると
特定のファイル名のファイルを置き換えするような事がしたいのです
例えば
c:\aaa\test\a.ini
d:\test\a.ini
というファイルがあったとします
どのフォルダ階層にあるかはわからないのですが
testフォルダ以下にあるa.iniファイルを
a.bakというファイルにリネームして
バッチファイルのカレントに置いてあるa.iniファイルを
そのフォルダにコピーする
test\a.iniファイルがどこにも見つからなければ
該当ファイルが見つかりませんでしたので更新に失敗しました
というようなメッセージを出す
このようなプログラムをバッチファイルで作成する事は可能でしょうか?
バッチファイルの基本コマンドは知っているのですが
forとか高度な使い方はよくわからず教えて頂きたいのです
よろしくお願い致します
No.3ベストアンサー
- 回答日時:
以下のサンプルはCドライブのルートディレクトリ(C:\)からtest\a.iniに該当するファイルを探して、
カレントディレクトリのa.iniに置き換えるものです。
:----------------------------------- sample.bat
echo off
set msg=該当ファイルが見つかりませんでしたので更新に失敗しました
for /d /r C:\ %%d in ( test* ) do (
if /I "%%~nxd"=="test" if exist "%%d\a.ini" (
if exist "%%d\a.bak" del "%%d\a.bak"
ren "%%d\a.ini" a.bak
copy .\a.ini "%%d"
set msg=更新しました
)
)
echo.
echo %msg%
目的のことができました
バッチファイルではそこまで高度な事できないと
あきらめかけていましたが
できるんですね
勉強になりました
No.2
- 回答日時:
このバッチで、バッチのあるディレクトリ以下からa.iniを探し、
見つけたらバッチの場所にコピーをして、元のa.iniをa.bakにリネームできると思います。
※ 複数見つけた場合には上書きを確認する
========
@echo off
rem 変数設定
:SET
set first=a.ini
set second=a.bak
rem ファイル名検索再帰処理
:SEARCH
for /r %%a in (*) do ((set fullpath="%%a") & (set filename=%%~xna))&& (call :NAMECHK)
goto SECEXIT
rem ファイル名存在確認
:NAMECHK
if %filename%==%first% goto COPURENAME
goto :eof
rem コピー&リネーム処理
:COPURENAME
echo %fullpath%
copy %fullpath% /-Y
ren %fullpath% %second%
goto :eof
rem 変数開放
:SECEXIT
set filename=
set first=
set second=
pause
========
参考:
ここを参考にしました。
http://bat-file.seesaa.net/article/44567923.html
この回答への補足
c:\abc\a.ini ←ファイルの置き換えしない
c:\test\a.ini ←ファイルの置き換えする
c:\abc\test\a.ini ←ファイルの置き換えする
このようにtest直下にあるa.iniだけを置き換え対象にしたいのです
testディレクトリの下にあるa.iniだけを置き換え対象にしたい
この条件のところ以外のところは自分でも作る事ができました
testフォルダの下にあるa.iniという条件はどのように判別すればいいでしょうか?
No.1
- 回答日時:
うる覚えです。
すみません。IF EXIST ファイル名
か
DIR
ERRORLEVELで判定し検知、条件分岐したように思います。
メッセージはECHOかPAUSEを使う。
これらの検索をしてみてはどうでしょうか。
すいませんもうしこし具体的にやりたいことを質問しますと
for /r c:\ %%a in (a.ini) do (
ここでファイル置き換え処理を記述
)
このようにするとc:\のサブディレクトリ以下全てのファイルを置換する事が
できるのですが
今回対象としたいのは
test\a.ini
のようにtestディレクトリの下にあるa.iniだけを置き換え対象にしたいのです
以下のように書いてみたのですが
うまくいかなかったので・・・
for /r c:\ %%a in (test/a.ini) do (
ここで処理する
)
for /r c:\ %%a in (*test/a.ini) do (
ここで処理する
)
for /r c:\ %%a in (*/test/a.ini) do (
ここで処理する
)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 Windows10で、フォルダにあるすべてのファイルを、下層フォルダも含め一つの階層へ配置し直したい 3 2022/05/31 09:50
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) パスワード付きExcelブックについて 4 2022/06/02 21:34
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- ゴルフ ショットナビクレスト ゴルフ場データ更新について 2 2023/01/01 10:34
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- ソフトウェア Aimpに関する質問です。 1 2022/09/08 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトで変数が数...
-
word VBA ファイル名 保存
-
バッチファイルで、iniファイル...
-
コマンドでファイルコピーする...
-
ftp処理でmove(移動)を行いたい
-
[DOS] コピー先に同じファイル...
-
ExcelVBAのDirでスペース含むフ...
-
VBScriptで特別な意味を持つ記...
-
ファイル名を該当フォルダ内か...
-
前日日付のファイルGETバッチ
-
■ファイルのリネーム(rename)...
-
ファイル名の頭5桁と同名のフォ...
-
サブフォルダからファイルをコ...
-
テキストファイルのファイル名...
-
VBでテキスト形式のファイル...
-
aタグのhrefにネットワークパス...
-
ファイル名を一括してリネーム...
-
バッチファイルでファイルを置換
-
コマンドプロンプトでファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトでファイル...
-
フォルダ内の更新日時が一番新...
-
[DOS] コピー先に同じファイル...
-
コマンドプロンプトで変数が数...
-
バッチファイルで、iniファイル...
-
ExcelVBAのDirでスペース含むフ...
-
ファイル名に ” を使うと エク...
-
バッチコマンドでファイル名の...
-
サブフォルダからファイルをコ...
-
DOSのバッチ作成について‐FORの...
-
ファイル名の頭5桁と同名のフォ...
-
.batでファイル名から抽出して...
-
VBA GetAttrについて教えてくだ...
-
aタグのhrefにネットワークパス...
-
バッチにて複数のcsvファイルを...
-
【vbs】ファイル名の検索と該当...
-
ファイル名を該当フォルダ内か...
-
Windowsコマンドプロンプトで、...
おすすめ情報