バッチファイルでの移行元パスと移行先パスのコピー処理を実現する方法は?

このQ&Aのポイント
  • バッチファイルで移行元パスと移行先パスの情報を参照し、コピー処理を行う方法を教えてください。
  • csvファイルまたはテキストファイルに纏めた移行元パスと移行先パスの情報をfor /fで参照し、バッチファイルでコピー処理を行いたいですが、上手く動作しません。
  • 移行元パスと移行先パスが記載されたファイルをバッチファイルで読み込み、xcopyコマンドを使ってファイルをコピーする方法を教えてください。
回答を見る
  • ベストアンサー

バッチファイルについて質問させて下さい。

下記のようなcsvファイルまたはテキストファイルに纏めた移行元パス、移行先パスの情報をfor /fで行毎に参照しコピー処理を行うバッチファイルを作成したいと考えているのですが頓挫しております。 出来るだけバッチファイルで実現したいのですが可能でしょうか。お手数ですがご教示下さい。 (コマンドはxcopyを想定しています。) ------file.csv---------- 移行元パス1,移行先パス1 移行元パス2,移行先パス2 ・        ・ ・        ・ ---------------------- for /f "delims=,"%%a in (file.csv) do xcopy %%a 上記では移行先が指定できないので動きませんでした。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

for /f "delims=, tokens=1,2" %%a in (file.csv) do xcopy %%a %%b tokensで1カラム目と2カラム目を指定。それぞれ%%aと%%bで参照できる。

ZOOJIRUSHI
質問者

お礼

確認が遅くなってすみません。 ご教示ありがとうございます。無事動きましたし、理解を深める事ができました。 尚、次は可能なら移行元フォルダと移行先フォルダのデータ差異を比べる為のバッチも作成したいと思っています。 下記のような方法を考えていて、一度自分で作れるかチャレンジしてみますが、もしまた躓くような事があれば改めて質問させて頂くかもしれません。その際、もしお気づき頂けた場合はまたお力添え頂けますと幸いです。この度はご回答ありがとうございました。 xcopyで使用したcsvリストを同じようにfor/f "delims=,tokens=1,2"で参照させdirの結果を移行元、移行先でそれぞれファイルにリダイレクト→ファイルの中身をfcコマンドで比較。

関連するQ&A

  • 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)

  • バッチでファイルの読み込み

    Windowsバッチでファイルの読み込みをしようと思っているのですが、 下記コマンドの実行で「ファイルが見つかりません」となります。 ※パスにスペースを含むのでusebackqを使用しました。 FOR /F "usebackq tokens=1,2 delims= " %%i in ("c:\temp 1\data.txt") DO echo %%i WindowsServer2003でうまくいかなかったのですが、 Xpですれば問題なくファイルを読み込めました。 何か差があるのでしょうか?

  • バッチファイル作成で又また困っています。

    ・質問No (No.2233751)でCSVファイルの結合でお世話になったyazaemonです。皆様に助けて頂いたばかりですが、上司より過去のLogもHOSTへFTPしたいので・・・出来ないかとの「とほほ」が入りまして、教えていただいた「FOR /F "delims="」を使い考えましたが挫折しています。すみませんがご教授お願いします。 〔内容〕  D:\data\CL_Logs\Logs\でLogsフォルダー内にYYYMMDD形式で名前の付いたフォルダー(2年分のフォルダー:365x2=約730個)が有ります。そのフォルダー内には、それぞれ300件以上のCSVファイルが有ります。今後の日付でのCSVファイルの結合とFTPは助けていただいてバッチシOKとなりました。  今回はLogsフォルダー下の過去の日付のフォルダー(例:20050505)内の300件以上のCSVファイルの内容を結合した2005050.CSVを作成し、FTPすると言うものです。  〔ヘナチョコ未完成バッチ〕 @echo off setlocal set TARGET_DIR=D:\data\CL_Logs\Logs cd /d %TARGET_DIR% dir /ON /B > dirlist.dat FOR /F "delims=" %%i in (dirlist.dat) do type "%%i" >>dir.csv ---ここで行き詰まりです。 Logsフォルダーにdir.cvsを作りそれをFORコマンドで利用しと思い試しましたが玉砕しました。理論適には多分dir.csvの1行目にcdしcsvファイル用のfilelist.datを ・dir /ON /B JL*.csv >filelist.datの様に作成し、 ・FOR /F "delims=" %%i in (filelist.dat) do type "%%i" >>??? の様にすれば結合したcsvが出来るのだろうと思いますが技量が全く足りません。又、>>???のファイル名をCSVが入っているカレントの過去の日付の(例:20050505.csv)にする方法とかは検討も付きません。  厚かましいお願いですが宜しくお願いいたします。

  • バッチでcsvファイルの指定のカラムを編集したい

    バッチでファイルの編集をしたい バッチファイルを使用して、csvファイルの読み込み~編集を行いたいと思っております 元ファイル:TEST_DATA.csv 内容: 111,222,333,444,555 123,456,789,321,987 上記のcsvファイルを読み込み、 ・5カラム目が987ならば3カラム目を654に変更する という処理を実行させたいのですが、 どのように行えばよいのでしょうか? 現在考えていることは、 1.for文を使用して指定のカラムを抜く(3カラム目と5カラム目を抜く)) 2.5カラム目の値をif条件に指定し、合致した場合、抜いた3カラム目の変数に654を入れる 3.654に変更した変数を3カラム目の値として入れる という順番で行えばいいと思っているのですが、 下記まで行ったところで行き詰ってしまいました for /F "tokens=3,5 delims=," %%i IN (TEST_DATA.csv) DO @(if %%j==987 set %%i=654 echo %i %j ) お分かりになられる方、ご教授願えませんでしょうか

  • バッチで118項目のCSVを処理したいですが。。。

    バッチファイルで一行に、118項目のあるCSVファイルを読み込んで、必要な項目を抽出して、新しいCSVを作りたいです。 いろいろ調べたら for /f "delims=, tokens=1-3" %%I in (sample.csv) do ( echo %%I %%J %%K>> new.csv ) で実現できると思っていましたが、tokensに値の制限があって、tokens=1-118にすると、うまくいかないです。 どなたかいい方法をご存知でしたら、教えていただきたいですが。

  • Windowsバッチで「,,,,,,,,,,」削除

    CSVファイルがあります。Windowsバッチを使って、 CSVファイルの中に「,,,,,,,,,,」という行があったら この行を削除して上書き or 別名で保存したいのですが、 どのようなコードになりますか? for でdelimsなしで1行ずつ読み込み、 「=,,,,,,,,,,」で処理を分岐させようとしたら うまくいきませんでした。

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

    ファイルの中身を抽出するバッチを作成しました。 そのバッチファイルを実行し、test.csvというファイル名をつけて出力できたんですが、出力パスも指定することは可能なんでしょうか? find.bat > test.csv

  • バッチにてforでiniファイルのパラメータ取得

    バッチで一個のforでiniファイルのパラメーターを三つ取得したいですが。。。 a.iniファイルが存在しています。内容は: パラメーター設定ファイル 会員コード:M1MM ID:FUKI パスワード:FUKI バッチで、会員コード、ID、パスワード三つのパラメーターを取得したいですので、forを使用したいと思います: set a=1 for /f "skip=1 delims=: tokens=1-2" %%I in (a.ini) do ( set kind[%a%]=%%J set /A a=%a%+1 ) echo %a[1]%,%a[2]%,%a[3]% >> 123.csv ですが、aのカウントアップはうまくいかず、うまく三つのパラメーターを取得できません。for三回を使用すれば行けるはずですが、for一回でうまく取得できる方法が有りませんでしょうか?おしえてください。

  • フォルダごとのファイル数を数えるためのバッチ

    フォルダごとのファイル数を数えるためのバッチをネットで調べて作成しました。 このバッチファイルを親フォルダ直下に配置し、ダブルクリックで実行しています。 ------------------------------------------------------------------------- @echo off setlocal enabledelayedexpansion set /a counter=0 dir %1 /ad /s /b >trash.csv for /f "tokens=1 delims=," %%i in (trash.csv) do ( set /a counter = 0 for %%A in (%%i\*) do ( if exist %%A ( set /a counter=counter+1 ) ) echo %%i : !counter! ) ------------------------------------------------------------------------- しかし、結果は、フォルダ名は取得していますが、ファイル数が取得できていません。 こんな感じです。 setlocal コマンドに無効なパラメータが指定されました d:\画像\フォルダ1 = 0 d:\画像\フォルダ2 = 0 d:\画像\フォルダ1\フォルダ3 = 0 どたなかどこが間違っているのかご指摘ください。

  • バッチファイルで2行にわたるコマンドを入力したいのですが

    バッチファイルで複数行にわたるコマンドを打ちたいのですが、方法がわからなくて困っています。 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" "test%hinichi%01.txt" "test%hinichi%02.txt" ・・・・・・・ と31個のファイルを圧縮するバッチです。 体裁の問題ですが、 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" ? "test%hinichi%01.txt" ? "test%hinichi%02.txt" ・・・ としたいのですが各行のつなぎの記号?がわかりません。 ご存知の方、よろしくお願いいたします。

専門家に質問してみよう