
バッチファイルでファイルを置換
あるバッチファイルをダブルクリックすると
特定のファイル名のファイルを置き換えするような事がしたいのです
例えば
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を見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
【DOSバッチ開発】末尾のタブの...
-
ExcelVBAのDirでスペース含むフ...
-
ftp処理でmove(移動)を行いたい
-
[DOS] コピー先に同じファイル...
-
コマンドプロンプトでのCSV...
-
スタートアップのファイルをバ...
-
ExifToolでの文字化け対策
-
バッチコマンドでファイル名の...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
【バッチファイル】forコマンド...
-
サブフォルダからファイルをコ...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
VBAでワークシートを引数として...
-
バッチでテキストファイルから...
-
バッチ処理でファイルの中身を...
-
アクセス 壊れた? 「ファイ...
-
「読み取りと実行」と「読み取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
バッチファイルで、iniファイル...
-
コマンドプロンプトでファイル...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトで変数が数...
-
ExcelVBAのDirでスペース含むフ...
-
[DOS] コピー先に同じファイル...
-
ファイル名の頭5桁と同名のフォ...
-
サブフォルダからファイルをコ...
-
フォルダ内の更新日時が一番新...
-
.batでファイル名から抽出して...
-
access,vbaでフォルダ内のファ...
-
バッチファイルで同一フォルダ...
-
バッチコマンドでファイル名の...
-
Windowsコマンドプロンプトで、...
-
スタートアップのファイルをバ...
-
ファイル名に ” を使うと エク...
-
ファイル名を該当フォルダ内か...
-
aタグのhrefにネットワークパス...
-
【DOSバッチ開発】末尾のタブの...
おすすめ情報