外付けHDD内にカテゴリごとにフォルダ分けされた5000個のファイルのうち
エクセルに書かれた1000項目のファイルを取り出し
違う場所のフォルダに移動させ一箇所に集めたいです。(cドライブ内や、違う外付けHDDなど)
現在一つ一つ手作業で、移動させています。
早く作業が終わらせれる
コマンドプロントや、バッチファイルあるいはそういうことができるツールなどあれば
ご教授お願いできないでしょうか?
作業としては、単純そうなのですが、1日つぶしてしまい、時間をもったいなく感じております。
よろしくお願い致します。
※補足
フォルダ名ファイル名には日本語が含まれていることもあります。
またファイル名で名前が重複しているものはありません。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
なんか面倒だけど、このままだと同じ質問をいつまでも繰り返しそうなので
ざっと書いてみました
○仕様
→エクセルにはa1から下方向にフルパスでコピーしたいファイルが羅列してある
→ただし書かれているファイルは必ず存在するか不問、存在しなければ飛ばす
→空白行がくるまでくりかえす
→移動先のフォルダは一つ、(仮にC:\newdirとしておく)
→移動先に同名のファイルがある場合は移動しない
→最終的に何個移動したか表示する
→エクセルを表示しないで実行することもできるが今回は一度エクセルを開いておく
○動作方法
以下ソースを、test.vbsなどの名称で保存し、ファイル名を羅列したエクセルファイルを
そのvbsファイルにドラッグアンドドロップすると実行される
以下ソース
'ここから
sub main()
set args= wscript.arguments
set oWSH =WScript.CreateObject("WScript.Shell")
set fs = CreateObject("Scripting.FileSystemObject")
if args.count=0 then
msgbox "ファイルを落としてください。"
exit sub
end if
set f=fs.getfile(args(0))
fb=fs.getBasename(f)
ext=fs.getExtensionname(f)
fp=fs.GetParentFolderName(f)+"\"
if lcase(ext)<>"xls" then
msgbox "エクセルファイルじゃない!"
exit sub
end if
CONST outDir="C:\newdir\"
if not fs.FolderExists(outDir) then
msgbox outDir+"というフォルダは存在しない"
exit sub
end if
set oXL = CreateObject("Excel.application")
oXL.visible=true
oXL.Workbooks.Open(args(0))
CONST xlDown=4
count=0
with oXL.Sheets(1)
startrow=1
endrow=.cells(startrow,1).end(xlDown).row
For i=startrow TO endrow
count=count+filecopy(fs,.cells(i,1).value,outDir)
Next
end with
msgbox cstr(count)+"個移動しました"
end sub
function filecopy(fs,f,d)
flag=0
if fs.fileExists(f) then
if not fs.fileExists(d+fs.getFileName(f)) then
fs.MoveFile f,d
flag=1
end if
end if
filecopy=flag
end function
main()
'ここまで
No.2
- 回答日時:
自分はプログラミングやスクリプトの知識が無いので、「FStr」という文字列置換ソフトを使った、バッチファイルの例を書かせて頂きたいと思います。
以下から「FStr」をダウンロードして、解凍します。
http://www.vector.co.jp/soft/winnt/util/se497060 …
次に、エクセルファイルから、コピーしたいファイルのリストを、純粋なテキスト形式で書き出して下さい。ファイルリストはフルパスにして下さい。例えば、以下の線内のような感じです。
----------------------------
E:\xxx\xxx\xxx.txt
E:\xxx\xxx\xxx.jpg
E:\xxx\xxx\xxx.mp3
----------------------------
次に、メモ帳を開いて、以下の線内のテキストをコピー&ペーストします。
----------------------------
@echo off
echo "■ 設定 ■"
set ファイルリストのフルパス=
rem (例 C:\ファイルリスト.txt)
set コピー先フォルダのフルパス=
rem (例 C:\コピー先フォルダ)
echo "■ 設定がされていなければ処理を停止する ■"
if "%ファイルリストのフルパス%"=="" exit
if "%コピー先フォルダのフルパス%"=="" exit
echo "■ コピー先フォルダを作成 ■"
md "%コピー先フォルダのフルパス%"
echo "■ ファイルリストをコピーする ■"
copy "%ファイルリストのフルパス%" "%TEMP%\コピーしたファイルリスト.txt"
echo "■ ファイルリストをファイルコピー用バッチファイルに置換 ■"
FStr "%TEMP%\コピーしたファイルリスト.txt" /rei "^(.+)$" "copy ""$1"" ""%コピー先フォルダのフルパス%""" > "%TEMP%\ファイルリストのファイルをコピーする.bat"
echo "■ 出来たバッチファイルを実行してファイルをコピーする ■"
call "%TEMP%\ファイルリストのファイルをコピーする.bat"
echo "■ 一時ファイルの掃除 ■"
del /q "%TEMP%\コピーしたファイルリスト.txt"
del /q "%TEMP%\ファイルリストのファイルをコピーする.bat"
echo "■ 完了メッセージの表示 ■"
echo ■
echo ■
echo ■ コピーを完了しました。何かキーを押すと終了します。
echo ■
echo ■
pause
----------------------------
次に、貼り付けたテキストを編集します。
「set ファイルリストのフルパス=」の後に、"コピー対象ファイルが書かれたリスト"のフルパスを書き込みます。例えば「C:\ファイルリスト.txt」等です。
「set コピー先フォルダのフルパス=」の後に、"コピー先フォルダ"のフルパスを書き込みます。例えば「C:\コピー先フォルダ」等です。
あと、パスに「"」(ダブルクォーテーション)は使わないで下さい。
編集が終わったら、適当な名前を付けて、ファイル名末尾の拡張子を「.bat」としてデスクトップ等に保存します。
保存したバッチファイルを、先程解凍したFStrのフォルダ内の、「FStr.exe」と同じ場所に移動します。
移動したバッチファイルを実行します。
するとファイルのコピーが開始され、終了すると画面が停止します。
恐らくですが、コピー先フォルダを自分のデスクトップやドキュメントフォルダ以外に設定すると、権限の関係上エラーが出る気がするので、自分のユーザーの権限外のフォルダをコピー先に指定する場合は、右クリックから管理者権限でバッチファイルを実行して下さい。
一度、ファイル数の少ないテスト用ファイルを作成し、テストを行った後で本番を行うと良いと思います。
コピー対象ファイルをフルパスにすることが難しい場合は、その旨をまた書き込んで下さい。可能な限り対応させて頂きます。
No.1
- 回答日時:
具体的に、エクセルシートがどうなっているか
どういったセルにどんな記載があってそれをどう移動したいのでしょうか?
またファイル名が被った場合移動してしまうと上書きされますがそれでよいのでしょうか?
>そういうことができるツール
エクセル使っているならVBA(マクロ)でやるか
WSH(VBS)でやってもよいかと
>具体的に、エクセルシートがどうなっているか
>どういったセルにどんな記載があってそれをどう移動したいのでしょうか?
A列に上から順番に必要なファイル名が
並べて書いてあります。
外付けHDD内のフォルダ内に
ツリーじょうに振る分けられているファイルを
エクセルに記載されているファイル名にしたがって
違う外付けHDD内に一箇所にまとめて移動させたいです。
>またファイル名が被った場合移動してしまうと上書きされますが>それでよいのでしょうか?
基本的に同じファイル名は存在しないように調整しているので
上書き保存されることはなさそうです。
>エクセル使っているならVBA(マクロ)でやるか
>WSH(VBS)でやってもよいかと
vbaは自分は使ったことがないです。
違う質問版で質問したときにそれを使ってやればできると
書き込まれましたが、一時間ほど勉強しても良くわかりませんでした。泣
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- デスクトップパソコン フォルダ内のファイル移動が出来ません 3 2022/10/16 05:42
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ファイルを開く」のマイプレ...
-
携帯電話のスーパーメールを、...
-
Excelで外部のファイルの場所を...
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
MkDir パス名が無効です
-
linux duコマンドで困っています。
-
ExcelVBAでリンク先の対象のフ...
-
同名フォルダを作成し、そのフ...
-
秀丸のタグジャンプがうまくで...
-
参照元Excelファイルをバックグ...
-
VBSでメール送信
-
robocopyをすると隠し属性フォ...
-
Teratermマクロの戻り値の取得失敗
-
<a href="file:///フォルダ名/...
-
データリーダーからのデータ読...
-
ファイルの作成日時について
-
このプログラムなんですがsheet...
-
表示を標準か改ページプレビュ...
-
スマホでHTMLファイルを開いて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コピーの際、ファイルの作成日...
-
フォルダ名やファイル名、テキ...
-
リカバリーディスクのコピーの...
-
soulseek日本語ぱっちについて...
-
フォルダー構成のみをコピーしたい
-
skype同士で通話した履歴を印刷...
-
携帯電話のスーパーメールを、...
-
検索用ソフトEverythingについて
-
アカウント名の変更(ユーザー...
-
パソコンの写真をsdカードに保...
-
フォルダのアドレスと選択した...
-
Excelの保存で「ワークスペース...
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
同名フォルダを作成し、そのフ...
-
Excelで外部のファイルの場所を...
-
linux duコマンドで困っています。
-
MkDir パス名が無効です
-
<a href="file:///フォルダ名/...
-
OpenFileDialogを使った後にも...
おすすめ情報