フォルダーの移動と削除のプログラムを作成する方法
- フォルダーを上の階層に移動するプログラムを作成し、元のフォルダーを削除する方法を教えてください。
- ターゲットフォルダーの名前を変えずに、そのフォルダーを上の階層に移動する方法を知りたいです。
- ファイル整理中に多くのターゲットフォルダーを一括で処理するためのバッチやスクリプトの作成方法について教えてください。
- ベストアンサー
直ぐ上のフォルダーへ移動
下記のようなフォルダー構造のファイルがあるとします。 1) D:\ABC\XYZ\GGG 2) D:\ABC\FGG 1)の場合 D:ABC\GGG 2)の場合 D:\FGG のようターゲットフォルダー(GGG,FGG)を一つ上のフォルダーに名前を変えずに移動する 但しその場合、空になった元あった直上のフォルダー(XYZ,ABC)は削除するプログラムを教えて下さい。 バッチやスクリプトのプログラムを作成してデスクトップにショートカットのアイコンを作成し そこにドラッグ&ドロップで処理できれば嬉しいのですが 専用のアプリなど別の解決法があればお願いします。 現在ファイル整理中でターゲットフォルダーが多数あるので 一括で処理できれれば幸いです。
- NuboChan
- お礼率65% (1295/1974)
- Windows 10
- 回答数5
- ありがとう数3
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
@echo off for %%A in (%*) do ( cd /d "%%~A" for /d %%B in (*) do ( if exist "..\%%~nxB" ( if exist "..\%%~nxB_" ( if exist "..\%%~nxB__" ( echo フォルダ名が _ を2つ付けても重複 "%%~nxB" ) else ( move "%%~B" "..\%%~nxB__" ) ) else ( move "%%~B" "..\%%~nxB_" ) ) else ( move "%%~B" .. ) ) cd .. rd "%%~A" ) pause でどうですか? ファイル名やフォルダー名に空白は入れない方が良いですよ。
その他の回答 (4)
- notnot
- ベストアンサー率47% (4848/10262)
1) は再現しません。こちらでは上手く行きます。 パスに空白は含まれないだろうと思って、手を抜いていますが、もしかして空白が含まれますか? 2)これはフォルダー名が重複するので、無理ですね。 あらかじめname_1をリネームしておく必要があります。
補足
>パスに空白は含まれないだろうと思って、手を抜いていますが、もしかして空白が含まれますか? はい。 『S:\test\Name_1\Name 2』のように空白(半角)を含んだフォルダーが殆どです。 『Name 2 part 2』 のように複数の空白(半角)があるフォルダーもあります。 Name 2をName_2のように空白のない場合はうまく処理できました。 >2)これはフォルダー名が重複するので、無理ですね。 >あらかじめname_1をリネームしておく必要があります。 フォルダー名が重複するも少なからずあります。 この場合、 下位のフォルダー名を『Name 1』を『Name 1_』のように名前の最後に『_』アンダーバーを付加した フォルダー名に変名後に処理するようにBATを改造できませんか ? フォルダー名に空白がある場合もBAT改造に反映をお願いします。 ----------------------- ドラッグ&ドロップしたフォルダ名に「Unicode文字」が存在する場合も問題が出ますか ?
- notnot
- ベストアンサー率47% (4848/10262)
@echo off for %%A in (%*) do ( cd /d %%A for /d %%B in (*) do ( if exist ..\%%~nxB ( echo フォルダー名重複 "%%~dpnxB" ) else ( move %%B .. ) ) cd .. rd %%A ) pause かな。
お礼
引き続き、BATの修正ファイルをいただきありがとうございます。 いただいたBATをテストしてみました。 例えばエキスプローラーで 1)『S:\test\Name_1\Name_2』で S:\test\Name_1をターゲットフォルダーとして デスクトップに作成したBATにドラッグ&ドロップしましたが コマンドの構文が誤っています。 ディレクトリーが空ではありません。 とエラーが発生します。 2)『S:\test\Name_1\Name_1』では、 S:\test\Name_1をターゲットフォルダーとして デスクトップに作成したBATにドラッグ&ドロップしましたが フォルダー名重複 ディレクトリーが空ではありません。 とエラーが発生します。 同じフォルダー名が上位、下位にある場合も存在するのですが このような場合も想定する必要が出ました。 ----------------------- 『ディレクトリーが空ではありません。』は、 移動処理がうまく処理されずにエラーになる事が原因だ思います。 エラーが出る原因を修正できますか ?
- kteds
- ベストアンサー率42% (1876/4424)
プログラムを組むまでもなく、2つのコマンド move ,rmdirで可能です。 1) D:\ABC\XYZ\GGG move D:\ABC\XYZ\GGG D:\ABC rmdir D:\ABC\XYZ 2) D:\ABC\FGG move D:\ABC\FGG D:\ rmdir D:\ABC
補足
ありがとうございます。 現在ファイル整理中でターゲットフォルダーが多数あるので コマンドをOne_By_Oneで処理していては手数が掛かって効率が悪くなります。
- notnot
- ベストアンサー率47% (4848/10262)
バッチファイルでドラッグドロップしてください。 @echo off for %%A in (%*) do ( if exist "%%~dpA..\%%~nxA" ( echo フォルダー名重複 "%%~A" ) else ( move %%A "%%~dpA.." ) ) pause
お礼
ありがとうございます。 検証して確かに移動できることを確認しました。 少し思っていた作動とは違ったのでBATを修正いただけると嬉しいです。 条件は下記で最初と同じとして 1) D:\ABC\XYZ\GGG 2) D:\ABC\FGG 1)の場合で現在のBATでは、 GGGをターゲットでドラッグドロップしないと移動できません。 XYZをターゲットでドラッグドロップしてGGGを移動したいのです。 現在のBATで、XYZをターゲットにすると ABCにXYZ\GGGが移動してしまいます。 2)の場合も同様に現在のBATでは、 FGGではなくABCをドラッグドロップしてFGGを移動したいのです。 現在のBATでABCターゲットにすると D:にGGGが移動してしまいます。 また、移動後のフォルダーは空になるので削除したいので削除処理も追加したいです。
関連するQ&A
- ファイルと同名のフォルダを作成
デスクトップ上にプログラムもしくはショートカットを作り、 そのアイコン上に任意のファイルをドラッグ&ドロップしたら、 ファイルと同じディレクトリにファイルと同名のフォルダ(ファイルの拡張子は含まない)を作成するプログラムはあるでしょうか? パソコンに詳しい友人に聞いたところ、バッチファイルというものを作れば可能とかいっておりましたが、 バッチファイルの作り方がわかりません。 実現するにはどうしたらよいでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- ファイルを移動できるソフトまたはプログラム
バッチファイル以外で以下のようなことを実施したい。 フォルダAとBとCにあるファイルを移動できるソフト又はプログラムはないでしょうか? 移動先は、Dドライブに作成した今日の日付を名前にしたフォルダです。 移動先のフォルダも自動で作られるようにしたい。 日付フォルダが既にある場合は、141229_0、141229_1、141229_2・・・・と添え字をつけます。 移動先フォルダに中には、サブフォルダとして、フォルダ1、フォルダ2も自動で作ります。 できればショートカットをデスクトップに置き、ダブルクリックすると処理が実行されるようにしたい。
- 締切済み
- Windows 8
- 複数フォルダをまとめて移動するバッチプログラムを教えて下さい。
複数フォルダをまとめて移動するバッチプログラムを教えて下さい。 Cドライブの直下に「ABC」というフォルダがあります。 その中に複数のフォルダがあり、それぞれのフォルダ内にCSVファイルが保存されています。 その複数のフォルダと中身のCSVファイルまるごと、Eドライブの「XYX」というフォルダに移動するバッチプログラムを作りたいのですが、うまくいきません。できればMOVEコマンドを利用したいです。
- 締切済み
- SE・インフラ・Webエンジニア
- 1つ上の階層にフォルダを移動させるバッチファイル
windows XPで下記のようなバッチファイルを作成したいです。 aaaフォルダ内にyyy.batと111フォルダがあり、111フォルダの中にbbbフォルダとcccフォルダがあるとします。なお、bbb、cccフォルダ内にはファイルが存在しています。 そしてaaa、bbb、cccの各フォルダの名称は可変します。 この状態でyyy.batにbbb、cccフォルダをaaaフォルダ内に移動させる(一つ上の階層に移動させる)バッチプログラムを作成したいと思っています。 どのようにすればいいのでしょうか。 お分かりの方、お教えいただけないでしょうか。 よろしくお願いいたします。
- 締切済み
- Windows XP
- VisualC++6.0 で main関数への引数
#include<stdio.h> int main(int argc,char *argv[]) { FILE *fp; fp=fopen("abc.txt","w"); } こんな感じの xyz という名前のプログラムがあります。 MS-DOSで、xyzと同じディレクトリから xyz tekitou リターン と打ち込んでプログラムを起動させたらxyzと同じディレクトリの中に abc.txtを作成してくれます。xyz.exeのダブルクリック起動でも 同様の結果です。 だけどxyz.exeのアイコンの上に適当なファイルを ドラッグ&ドロップさせて起動させた場合 abc.txtは全然別の場所に作成されてしまいます。 正確に言うと、Windows98上でVisualC++6.0を使用して 上記のプログラムでデスクトップ上にxyz.exeを作成して (C:\WINDOWS\デスクトップ\xyz.exeの)アイコンに 適当なファイルをD&Dしてプログラムを実行したらC:\にabc.txtが できたということです。 私としては同じディレクトリ内に作成してくれなくては 都合が悪いのです。この現象が起きる理由あるいは 解決法をご存知の方がいらっしゃいましたらどうかよろしく お願いします。
- ベストアンサー
- C・C++・C#
- デスクトップフォルダを移動させるには
こんばんは。WinXP Pro使用です。 ハードディスクの円滑な運用(?)のために、マイ・ドキュメントとインターネット一時ファイルをD:ドライブに移動させるというワザをよく聞きますが、自分の場合ダウンロードファイルやよく使う書類をデスクトップに置くことが多く、最も出入りの激しいフォルダです。マイドキュメントと同様に C:\Documents and Settings\Owner\デスクトップ をD:ドライブに移動させる方法はないでしょうか。このフォルダのプロパティーを開いてもターゲットフォルダの変更というオプションはなかったのですが、単純にこのフォルダをD:ドライブにドラッグドロップすればよいのでしょうか。
- ベストアンサー
- Windows XP
- 同名フォルダを作成し、そのフォルダに移動するバッチ
自宅で 「Files 2 Folder」 http://www.gigafree.net/utility/move/files2folder.html というフリーソフトを使って、 作成したファイルと同名のフォルダを作成し、 その作成されたフォルダ内にファイル移動させてファイルの管理をしております。 会社でもこのソフトを使えればいいのですが、 業務に必要不可欠でないフリーソフトをインストールすることを許されていないので、 一つ一つ手作業でフォルダを作成し、そのフォルダにファイルを放り込んでいます。 しかし、 バッチというものを作れば、 windowsの基本機能で、 あるアイコンにファイルをまとめてドラッグアンドドロップしたら、 各ファイルと同名のフォルダをそれぞれ作成し、その作成されたフォルダ内に移動させるようには出来るのでしょうか? もし可能でしたらやり方を教えてください。 尚、使用しているPCのOSはWindows 7 Professionalです。
- ベストアンサー
- その他(プログラミング・開発)
- 「作業フォルダ」について
Windows XPのパソコンでバッチファイルを作成し、そのショートカットをデスクトップに置いて実行しています。 そのバッチファイル(ショートカット)のプロパティを見ると、いろいろな項目がある中で 「作業フォルダ」という項目がありますが、どのような意味があるのでしょうか? また、入力するとしたら(多分フォルダのパスを入力すると思うのですが…) ここには何を入力すればよいのでしょうか? よろしくお願いします。
- ベストアンサー
- Windows XP
- 複数フォルダの移動バッチ
PCにある複数フォルダ(2000フォルダ)を別PCに移動させたいのですが、いいバッチはありませんでしょうか? 環境はXPです。 robocopyのコマンドも使えるようにはなっています。 ■元PC C:\abc\tokyo\0000\ C:\abc\tokyo\0022\ C:\abc\osaka\0000\ C:\abc\osaka\0123\ C:\abc\nagoya\0000\ C:\abc\nagoya\0568\ 等などのフォルダがあります。 各数字のフォルダ以下にファイルがあります。 この中で指定したフォルダを移動させたいのです。 例: C:\abc\tokyo\0000\ C:\abc\osaka\0123\ C:\abc\nagoya\0568\ を D:\backup\tokyo\0000\ D:\backup\osaka\0123\ D:\backup\nagoya\0568\ という風に移動させたいです。 xcpyで指定数書いて実行後、mkdirを流すしかないでしょうか? 例:xcopy /E C:\abc\tokyo\0000 D:\backup\tokyo\0000\ rmdir /Q /S C:\abc\tokyo\0000 みたいに2000行程書く以外に何か方法はありますでしょうか?
- ベストアンサー
- Windows XP
- サブフォルダ内のファイルを読むD&D
複数のavi動画ファイルをD&Dして avidemuxで処理するシェルスクリプト(バッチファイル)を以下のように書きました。 :start if "%~1" == "" goto end "C:\Program Files\Avidemux 2.6 - 64bits\avidemux_cli" --load %1 --output-format MP4v2 --save "%~dpn1.mp4" --quit shift goto start :end exit これを改良して フォルダ毎D&Dして、読み込んで サブフォルダ内に入っている全てのaviファイルに上記の処理をかけられる バッチファイルを作成したいのですが どのようにして作れば良いですか?
- ベストアンサー
- その他(プログラミング・開発)
お礼
修正されたBATファイル ありがとうございます。 サンプル数が少なく、ターゲットのファイルを全てテストしたわけではありませんが 約50個ほどテストした結果、45個は問題なく処理できました。 5個ほどエラーで処理できませんが原因は、 多分フォルダー名の単語数が長さが長いので処理できなかったものと思われます。 処理できなかったターゲット数が少ないので出来ないディレクトリーは手動で処理しました。 十分に機能するBATを頂き感謝致します。 最後までお付き合い願いありがとうございます。