次のようなファイル構成で
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(別のフォルダ)に階層を含めコピーする方法も含め
ご教授をい願いします
No.3ベストアンサー
- 回答日時:
ああ、すいません。
>> echo F | xcopy %X% %Y%
>echo F | xcopy %X% %Z%
>としましたが
タイプミスです。お気づきの通り、Zが正しい。
あと、
誤:for /f "delims=" %%F in ('dir /b /s') do call :SUB "%%~F"
正:for /f "delims=" %%F in ('dir /b /s /a-d') do call :SUB "%%~F"
でした。
もとの物ではファイルだけでなくてフォルダも比較してしまっており、おかしくなってしまいました。
なお、実行前には C:\CCC\ は空にしておいてください。
この回答への補足
回答ありがとうございます
テストで正常動作を確認しました、どうもありがとうございました
実践で躓いておりますが・・・
追加された/a-dの意味を教えていただけませんでしょうか
dir /?では調べきれませんでした
よろしくお願いいたします
No.2
- 回答日時:
No1です。
cd /d C:\AAA
REM 以下のすべてのファイルについて、SUBを呼び出す
for /f "delims=" %%F in ('dir /b /s') do call :SUB "%%~F"
goto :EOF
:SUB
REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
set X="%~1"
set Y=%X:C:\AAA=C:\BBB%
set Z=%X:C:\AAA=C:\CCC%
REM 内容の比較
fc %X% %Y% >NUL 2>NUL
REM 一致したら戻る
if %ERRORLEVEL% == 0 goto :EOF
REM 一致しなかったらコピー
echo F | xcopy %X% %Y%
この回答への補足
回答ありがとうございます
結果です
C:\>d.bat
C:\>cd /d C:\AAA
C:\AAA>REM 以下のすべてのファイルについて、SUBを呼び出す
C:\AAA>for /F "delims=" %F in ('dir /b /s') do call :SUB "%~F"
C:\AAA>call :SUB "C:\AAA\ccc"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ccc"
C:\AAA>set Y="C:\BBB\ccc"
C:\AAA>set Z="C:\CCC\ccc"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ccc" "C:\BBB\ccc" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 2 == 0 goto :EOF
C:\AAA>REM 一致しなかったらコピー
C:\AAA>echo F | xcopy "C:\AAA\ccc" "C:\BBB\ccc"
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)? F
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)?
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)?
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)?
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)?
C:\BBB\ccc\abc.txt を上書きしますか (Yes/No/All)?
C:\AAA>call :SUB "C:\AAA\ddd"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ddd"
C:\AAA>set Y="C:\BBB\ddd"
C:\AAA>set Z="C:\CCC\ddd"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ddd" "C:\BBB\ddd" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 2 == 0 goto :EOF
C:\AAA>REM 一致しなかったらコピー
C:\AAA>echo F | xcopy "C:\AAA\ddd" "C:\BBB\ddd"
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)? F
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)?
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)?
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)?
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)?
C:\BBB\ddd\ghi.txt を上書きしますか (Yes/No/All)?
C:\AAA>call :SUB "C:\AAA\ccc\abc.txt"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ccc\abc.txt"
C:\AAA>set Y="C:\BBB\ccc\abc.txt"
C:\AAA>set Z="C:\CCC\ccc\abc.txt"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ccc\abc.txt" "C:\BBB\ccc\abc.txt" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 0 == 0 goto :EOF
C:\AAA>call :SUB "C:\AAA\ccc\def.jpg"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ccc\def.jpg"
C:\AAA>set Y="C:\BBB\ccc\def.jpg"
C:\AAA>set Z="C:\CCC\ccc\def.jpg"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ccc\def.jpg" "C:\BBB\ccc\def.jpg" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 1 == 0 goto :EOF
C:\AAA>REM 一致しなかったらコピー
C:\AAA>echo F | xcopy "C:\AAA\ccc\def.jpg" "C:\BBB\ccc\def.jpg"
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)? F
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)?
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)?
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)?
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)?
C:\BBB\ccc\def.jpg を上書きしますか (Yes/No/All)?
C:\AAA>call :SUB "C:\AAA\ddd\ghi.txt"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ddd\ghi.txt"
C:\AAA>set Y="C:\BBB\ddd\ghi.txt"
C:\AAA>set Z="C:\CCC\ddd\ghi.txt"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ddd\ghi.txt" "C:\BBB\ddd\ghi.txt" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 0 == 0 goto :EOF
C:\AAA>call :SUB "C:\AAA\ddd\jkl.jpg"
C:\AAA>REM 文字列を置き換えて比較対象のファイル名、コピー先のファイル名を求める
C:\AAA>set X="C:\AAA\ddd\jkl.jpg"
C:\AAA>set Y="C:\BBB\ddd\jkl.jpg"
C:\AAA>set Z="C:\CCC\ddd\jkl.jpg"
C:\AAA>REM 内容の比較
C:\AAA>fc "C:\AAA\ddd\jkl.jpg" "C:\BBB\ddd\jkl.jpg" 1>NUL 2>NUL
C:\AAA>REM 一致したら戻る
C:\AAA>if 0 == 0 goto :EOF
C:\AAA>goto :EOF
C:\AAA>
となりました
> echo F | xcopy %X% %Y%
echo F | xcopy %X% %Z%
としましたが
C:\CCC\cccとC:\CCC\dddの拡張子のないファイルが出来ました
本来でしたら一致しないファイルはC:\AAA\ccc\def.jpgのみです
No.1
- 回答日時:
何をしたいのか不明です。
C:\AAA 以下のすべてのファイルについて、パス名の C:\AAA を C:\BBB に変えたファイルと比較するということでいいのか?
比較とはファイルの内容が一致するかどうかという比較なのか?そうでないならどういう意味か?
比較して一致したらどうするのか?一致しなかったらどうするのか?
この回答への補足
回答ありがとうございます
> C:\AAA 以下のすべてのファイルについて、パス名の C:\AAA を C:\BBB に変えた
> ファイルと比較するということでいいのか?
意味が理解できませんでした
> 比較とはファイルの内容が一致するかどうかという比較なのか?
比較とはファイルの内容が一致するかどうかという意味で使いました
> 比較して一致したらどうするのか?一致しなかったらどうするのか?
比較し一致したら何もしない
一致しなかったファイルをC:\AAAからC:\CCC(別のフォルダ)に階層を含めコピー
バッチファイルでファイルの内容が一致すれば何もしない
一致しないファイルを他のフォルダに階層を含めコピーしたい
次のようなファイル構成で
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: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 でファイルの内容が一致するかどうか比較
上記の4ファイルに対して判定後一致しなければC:\AAA内のファイルを
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:\AAAからC:\CCC(別のフォルダ)に階層を含め
コピーする方法もご教授をい願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
forfilesで検索したファイルを...
-
VBAでワークシートを引数として...
-
バッチ処理でファイルの中身を...
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
cshでファイルサイズ取得
-
.txtではなく.logの方が良いの...
-
renameコマンドについて
-
多数のサブディレクトリ内のフ...
-
バッチファイルで文字列削除に...
-
ファイルを処理中に次の処理に...
-
【Excel】 VBAを使って毎回名前...
-
Unicode 対応の sed って無いの...
-
テキストファイルで提出とは?
-
テキストファイルの内容を連結...
-
C言語、ファイルの存在チェック...
-
テキストファイルのファイル名...
-
Excelで、大量のファイルをテキ...
-
バッチファイルで、リムーバル...
-
VBAでエクセルをtxtに変換する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
テキストファイルのファイル名...
-
ファイルの最後に文字列挿入
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
バッチファイルからVBAに引数を...
-
accessでSQL文を使ってcsvファ...
-
テキストファイルのタブをカン...
-
MATLABで行列を配列に格納する方法
-
renameコマンドについて
-
【Excel】 VBAを使って毎回名前...
おすすめ情報