• 締切済み

BATです。

あるディレクトリ,,,仮にC:\DNとします。このディレクトリ内のすべてのファイルを連番の名称 0001,0002,,,とリネームまたは名称を変えて別ディレクトリにコピーでもよいのですが,BATファイルの書き方がわかりません。 windowsのGUI操作で同等の処理が可能ならそれでも結構です。(それの方がもっとよいのですが) 教えてください。

みんなの回答

回答No.3

えっと…… PowerShellだのbatじゃ絶望的だのって 他の回答者さん言ってますけど、 普通に単純に下記じゃダメなんですかね? ――――――――――――――ここから――――――――――――――― @echo off setlocal enabledelayedexpansion pushd "C:\DN" set /a cnt=0 for /f "usebackq delims=" %%f in (`dir /b /a-d`) do ( set /a cnt+=1 set no=00!cnt! set no=!no:~-3! set fileName=%%f set newFileName=!no!!fileName! ren "!fileName!" "!newFileName!" ) echo fin pause exit ――――――――――――――ここまで――――――――――――――― これじゃなんかマズいっすか? そりゃ、Unicodeは非対応ですけど……。

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.2

win7はpowershell を標準装備していますので 下記のようにpowershell で実行すれば簡単に実現できます。(BATを含んでBATよりも強力なツールです) 例は e:\wk1 フォルダのすべてのファイルについて 番号 1から始まる .txt ファイルに名前変更しています。 自分の環境にあわせて適当に応用すればいいです。 $nr = 1 foreach ($i in Get-ChildItem e:\wk1\* ) { Rename-Item $i -NewName(($nr++).ToString("0000")+".txt")}

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.1

GUI操作でそのような操作方法はありませんし、バッチファイル内で使える変数(=環境変数)は文字列であり、数値を扱えないので、そのような作業をプログラミングするのに絶望的なまでに向いていません。 普通にファイルコピー後、連番リネームソフトを使うのが良いと思います。 ↓ >Vector ソフトウェア検索:リネーム >http://search.vector.co.jp/vsearch/vsearch.php?key=%83%8A%83l%81%5B%83%80&kanji=shift-jis

関連するQ&A

  • batファイルでの一括削除

    知り合いに送ったファイルに不要な物が幾つかあるのが分かりました 知り合いはパソコン操作がそこまで得意でないのでこちらで作成したbatファイルを送り一括削除したいと思います 知り合いに送った圧縮ファイルがどこで展開されたのか分からないのですが 相対パスは分かるのでbatファイルでは相対パスで削除する事は出来るでしょうか? 削除したいファイルは全て名前がsendfilesと言う名前のディレクトリに入っており ディレクトリの中には数字3文字で001から154までほぼ連番で並んだディレクトリがあります このうち037と142の2つをディレクトリと中のファイルごと削除したいです 相対パスでの削除について分かりやすく書かれているURL等を教えて下さい

  • ファイル名のリネームとコピーを問合せ形式で行いたい

    よろしくお願いします。 ファイル名のリネームとコピーをDOSコマンドで問合せ形式で行うBATを作りたいのですが、作り方を教えて頂きたく質問をさせて頂きます。 実行環境は「Windows Server 2008 R2」です。 やりたいことは、 (1)BATをDOSプロンプトで起動 (2)「リネームするファイルのディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で3個)が画面に表示されて、番号で指定。 (3)「リネーム前のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (4)「リネーム後のファイル名を入力してください」と聞いてきて、ファイル名を入力。 (5)「xxxをyyyにリネームします。よろしいですか?」と聞いてきて、「はい」ならリネームを実行、「いいえ」なら(2)に戻る。エラーならBAT終了。 (6)「リネームを繰り返しますか?」と聞いてきて、「はい」なら(2)~(5)を繰り返し、「いいえ」なら(7)へ。 (7)「コピー元のディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (8)「コピー元のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (9)「コピー先のディレクトリを入力してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (10)「xxxをyyyにコピーしますよろしいですか?」と聞いてきて、「はい」ならコピーを実行、「いいえ」なら(7)に戻る。エラーならBAT終了。 (11)「コピーを繰り返しますか?」と聞いてきて、「はい」なら(7)~(10)を繰り返し、「いいえ」ならBAT終了。 初心者レベルではこのようなBATが作成できずに困っております。 どうぞ、よろしくお願いします。

  • batファイルで、あるディレクトリ配下に存在する場合は、実行を中断

    batファイルのコードで、 このbatファイルがある特定のディレクトリ内にある場合は、即座に実行を中断するようにしたいのですが、どうすればよいでしょうか。 詳しく述べます。 あるbatファイルがあります。 このbatファイルは、普段、マウスでダブルクリックして実行しています。 仮に、このbatファイルが C:\Temp\a というディレクトリにある場合に実行を中断するには、 ======================== set ThisScriptPath=%~dp0 if "%ThisScriptPath%" == "C:\Temp\a\" goto END ・・・ :END set ThisScriptPath= ======================== というようなコードを入れておけばいいと思います。 しかし、C:\Temp の中の「どのサブディレクトリにbatファイルがある場合でも(aサブディレクトリでもbサブディレクトリでも、何階層下でも)」実行を中断するにはどうすればいいのでしょうか。

  • 画像ファイルをリネームをしつつ、ディレクトリ分けをしたい

    ファイルを連番にしないと作業ができないソフトを使用して画像処理を行うことになりました。 そのため、ソースのデータファイルのディレクトリ構造操作と、 リネームを行いたいのですが、何か簡便な方法をご存知の方がいらっしゃいましたらご助言お願いしたいと思います。 【作業工程】 <ソース>※####部分は、0001~0050の連番ファイルです。 /test/a/test_a.####.jpg(50file) /test/b/test_b.####.jpg(50file) /test/c/test_c.####.jpg(50file) /test/d/test_d.####.jpg(50file) 上記200fileを、 /test/test/test_####.jpg と、連番にします。 ※####部分は、0001~0200の連番ファイルです。 画像処理ソフトにて、作業終了後、 元のディレクトリ構造とファイル名に戻したいのですが…。 現在は手動でディレクトリ分けをしてからフリーソフトでリネームしております。 画像処理ソフトの仕様はどうしても変更がきかないので困っております。 「Flexible Renamer」で、そのような処理を行える、という意見もお聞きしたのですが、方法がわかりません。 精通された方がいらっしゃいましたら、ご助言よろしくお願い致します。

  • bat処理リストを元にコピー

    batやvbsを使って下記のような動作ができるか教えて頂きたいです。 ・ ・ (1)数十個のファイル名一覧を拡張子付きでcsvでリスト化(ファイル毎に改行)済み (2)上記ファイルを元に[p:]ドライブ内でサブディレクトリを含め検索し[C:\copy]フォルダにコピーする。 以上の動作ですがbatでfor文を使用してやろうとしましたが、サブディレクトリまで含めた検索の動作ができません。 お分かりになる方宜しくお願い致します。

  • (VBA)bat処理の結果がおかしい

    以下の1)から5)までをVBAで行いたいのですが 1)、2)までのコードはネットを参考に作成したのですが  2)の結果が¥tempに書き出されませんでした。   (C:¥に直接書き出される) 原因は何でしょうか ?  (コードの修正をお願いします。) 以下は、行いたい事のイメージ。-------------------------------------------------- 1)指定ディレクトリにディレクトリ(C:\)に保存した   BATファイル(aa.bat)をコピーする 2)指定ディレクトリ内でaa.batを起動する 3)指定ディレクトリーに最初から存在したフォルダーを削除する 4)aa.batによって作成されたフォルダーを最初のフォルダー名に変名する 5)aa.batをコピー先から削除する 例:指定ディレクトリをC:¥temp、aa.batをC:\tempにコピーしたと  C:¥temp¥AA  C:¥temp\AA¥subAA   C:\temp\aa.bat aa.batを\temp内で起動した後で ------>を実施  C:¥AA    ------> 削除  C:¥AA_SUBAA ------> C:\AAに変名  C:\temp\aa.bat -----> 削除 最終的に  C:¥temp\AA --------------------------------------- Sub Test() Dim strPath As String Dim intPathLen As Integer Dim intR As Integer Dim F As Variant Dim obj As WshShell Dim sPath 'Range("A5:F100").Clear ' フォルダーを自由に選べること。 参考:officeTANAKA With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then ' MsgBox .SelectedItems(1) If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 mypath = .SelectedItems(1) Else mypath = .SelectedItems(1) & "\" End If End If End With If mypath = Empty Then MsgBox "フォルダー名の指定をキャンセルしました。": Exit Sub MyName = Dir(mypath, vbDirectory) ' 最初のフォルダ名を返します。 ’Range("A2") = mypath 'コピー先フォルダーの指定 'BATファイルのコピー FileCopy "C:\aa.bat", mypath & "aa.bat" 'batファイルの起動 sPath = mypath & "\aa.bat" Set obj = New WshShell Call obj.Run(sPath, WaitOnReturn:=True) End Sub ------------------------------------------------------------------- 以下は、aa.batの内容です。 for /d %%i in (*) do ( pushd . cd %%i for /d %%j in (*) do ren "%%j" "%%i_%%j" for /d %%k in (*) do ren "%%k" "../%%k" popd rd "%%i" ) -------------------------------------------

  • .bat の同時起動を回避したい。

    windows2008serverに、.batファイルを5個あります。これらは、同時に起動すると正常終了しない仕組みになっています。そのため、.bat の同時起動を回避したい。 それぞれの.batファイルの処理の前後関係は作ることは、避けたい。一つの処理が時間がかかると、次の処理が遅れてしまうからできません。 .batの同時実行を回避できるコマンド、もしくは、.batファイルのプログラムはあまりいじりたくはありません。 何か良い方法は、ありませんでしょうか?

  • BATファイル起動について

    お世話になっております。 javaのclassを実行する 以下の処理を行うbatファイルを作成したところ (ディレクトリ移動→classpathの設定→javaコマンド) cmd.exeよりこのbatファイルを実行すると 正常に動作してくれるのですが batファイルをダブルクリックすると javaを正常に実行しません。 errorや例外も特に発生していません。 batファイルを cmd.exeからの実行するのと ダブルクリックで実行するのには 何か違いがあるのでしょうか? よろしくお願いします。

  • タスクスケジューラでbatファイルを動かしたい

    Windows10とWindows7を使っています Biosにタイマー機能がないノートPC(Windows7)を、遠隔PC(Windows10)からタスクスケジューラを使ってWakeOnLanで起動させることにより、タイマー起動のようなことをしようかと思い立ちました。 http://plaza.rakuten.co.jp/mscrtf/diary/201210120000/ こことほぼここと同じことを考え ・コマンドでMagicPacketを送れるソフト(MagicSend)を探しだし ・MagicSendと同一ディレクトリ内にWakeOnLanのbatファイルを作って配置し ・そのWakeOnLanのbatファイルをタスクスケジューラに登録 したところ、起動に失敗しました。 ・WakeOnLanのbatファイルを手動で動かすと起動する ・WakeOnLanのbatファイルにストップウォッチソフト起動コマンドを追加してみたところ、手動ではWakOnLanもストップウォッチも起動するが、タスクスケジューラでは起動しない ところから、タスクスケジューラがバッチファイルの実行に失敗しているのではないかと思います ここから先がわからなくなりました この場合、どこを疑うべきでしょうか? Windows10のタスクスケジューラはWindows7とは違う点があるとか、タスクスケジューラでbatファイルを動かす場合はbatファイル内に記述するコマンドのカレントディレクトリの位置に気をつけなくてはならない(絶対パスを指定すべし?)とか、その他ありますか?

  • 「ファイル名を指定して実行」で見に行くディレクトリとautoexec.bat

    Windows98SEです。 スタート→ファイル名を指定して実行 で、例えば、notepadと入力すると、メモ帳が立ちあがりますよね。 ディレクトリを指定しなくても実行できるということは、見にいくディレクトリの設定がどこかでされているのだと思いますが、どこでされているのでしょうか。 過去の質問と回答(下記)によると、 「コマンドプロンプトでpathと入力したとき表示されるのが、コマンドプロンプトでカレントディレクトリを移動しなくても見に行くフォルダ」 なのだそうです。 そしてそれは、c:\Autoexec.batの中の PATH=......... で設定されているのだそうです。 私が思うのは、「ファイル名を指定して実行」のときもそれがきいているんじゃないかなあ、ということです。 私のPCでは、コマンドプロンプトでpathと入力すると、 PATH=C:\WINDOWS;C:\WINDOWS\COMMAND と表示されます。 C:\WINDOWSにはnotepadがあります。それはそれでいいのです。 でも、よくわからないのは、私のPCの c:\Autoexec.bat には、 PATH=.... というのがないのです。そのファイルには、 loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys と書いてあります。(これですべて) これでいいのでしょうか。 それとも、「ファイル名を指定して実行」の場合は、 c:\Autoexec.bat は関係ないのでしょうか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=6175