8.3形式の通し番号のついたファイル名に変更したいということですね。ご質問に、
>ロングファイル名を 8.3形式のショートファイル名にコンバートする
とあったので、元のファイル名の8.3形式に変更するのかと思って回答してしまいました。m(__)m
通し番号をつけるフリーソフトなら、探せばあると思いますが、折角ですので、一応、バッチファイルを使用する方法を書いておきます。その前に、お礼欄のご質問の回答から。
>1 これは、Windows2000の「ファイル名を指定して実行」から選択するのでしょうか?
それでも構いませんが、通常、".bat"及び".cmd"ファイルは、ファイルをダブルクリックするだけで実行できます。(ただし、下記のバッチファイルは、遅延環境変数の展開という機能をオンにした『コマンドプロンプト』上での実行が必要になるので、この方法ではエラーになります。)
>2 このファイルの置き場所はどこに置けばよろしいのでしょうか?
どこでも構いません。".mid"ファイルと同じフォルダにおいても差し支えありません。
>3 FileRename.cmd のパーミッションとか、どうなるのでしょうか?
Windows 2000での『アクセス権』のことでしたら、
"FileRename.cmd"ファイル自体は、ファイルを保存したフォルダのアクセス権に依存します。(保存したフォルダのアクセス権を引き継ぎます。)
"FileRename.cmd"の実行に当たっては、実行するユーザーが、コピー元の".mid"ファイルを読み出し、コピー先フォルダに書き込む権限が必要です。
>4 「c:\Documents and Settings\umiboz\My Documents\download\midi3a」の配下の全てのmidiファイルを、「c:\Documents and Settings\umiboz\My Documents\midi」のディレクトリ配下に、例えば、「mid_0001.mid , mid_0002.mid , mid_0003.mid,.......」としたいのですが、全ファイル数は1000は越えています。
ちょっと、複雑になるので、そのまま、エディタにコピー&ペーストして保存後、実行できるように書き替えました。実行の際には、
1.[スタート]⇒[ファイル名を指定して実行]の入力欄に、
cmd /v:on
と入力して、『コマンドプロンプト』を起動します。
(バッチファイル内で、遅延環境変数の展開機能を使用しているので、遅延環境変数の展開を有効にする"/v:on"オプションを必ず指定して起動してください。)
2.保存した"FileRename.cmd"ファイルを『コマンドプロンプト』のウィンドウにドラッグ&ドロップします。
3.『コマンドプロンプト』のプロンプトの右側に、
保存したフォルダのフルパス名\FileRename.cmd
と表示されているのを確認して、[Enter]キーを押してください。(実行が開始されます。コマンドの表示を抑制していますので、「コピー元 ⇒ コピー先」の形式でファイル名だけを表示し、その下にコピーコマンドの実行結果が表示されるようになっています。)
@echo off
set SRC=C:\Documents and Settings\umiboz\My Documents\download\midi3a
set DST=C:\Documents and Settings\umiboz\My Documents\midi
set FNum=0
pushd "%SRC%"
if not exist "%DST%" mkdir "%DST%"
for %%i in (*.mid) do (
rem for /f "delims=" %%i in ('dir /b /o:n *.mid') do (
set /a FNum=!FNum!+1
set FNStr=00000000!FNum!
set FNStr=!FNStr:~-4!
echo %%i ⇒ mid_!FNStr!.mid
copy /v "%%i" "%DST%\mid_!FNStr!.mid"
)
popd
1行目:コマンド表示を抑制します
2行目:環境変数 SRC にコピー元フォルダ名をセットします
3行目:環境変数 DST にコピー先フォルダ名をセットします
4行目:環境変数 FNum にファイルの通し番号の初期値-1をセットします。
5行目:コピー元のフォルダへ移動します。
6行目:コピー先のフォルダが存在しない場合に、コピー先のフォルダを作成します。
7行目:変数 %%i にコピー元の拡張子".mid"のファイル名が順番に一つずつ入って、8行目~12行目が繰り返し実行されます。
8行目~10行目:通し番号を1つずつ増やすための処理です。11~12行目の !FNStr! の部分が0001から始まる4桁の通し番号になります。他の桁数に変更したい時には、10行目の 4 の所を書き替えてください。
11行目:コピー元ファイル名 ⇒ コピー先ファイル名 の形式でファイル名を表示します。
12行目:コピー元ファイルを、コピー先フォルダにファイル名を変えてコピーします。
13行目:7行目の"for"コマンドの終了位置を示しています。
14行目:元のフォルダに戻ります。
おまけ:
7行目の"for %%i in (*.mid) do ("を一部書き替えると、アルファベット順(正しくは文字コード順)、サイズ順、日付順に通し番号をつけることも出来ます。
アルファベット順(A~から):
for /f "delims=" %%i in ('dir /b /o:n *.mid') do (
アルファベット逆順(Z~から):
for /f "delims=" %%i in ('dir /b /o:-n *.mid') do (
サイズ順(小さい方から):
for /f "delims=" %%i in ('dir /b /o:s *.mid') do (
サイズ順(大きい方から):
for /f "delims=" %%i in ('dir /b /o:-s *.mid') do (
日付順(古い方から):
for /f "delims=" %%i in ('dir /b /o:d *.mid') do (
日付順(新しい方から):
for /f "delims=" %%i in ('dir /b /o:-d *.mid') do (
Windows 2000の『コマンドプロンプト』上で、『名前を変えて、別フォルダへコピー』するバッチファイルで代用処理するというのでは如何でしょうか?(『コマンドプロンプト』の"rename"コマンドでは、ロングファイルネーム⇒8.3形式のリネームが出来ないので)
rem @echo off
pushd "C:\WINNT\Temp"
mkdir Dest
for %%i in (*.mid) do copy /v "%%i" Dest\%%~nxsi
popd
上記の5行を、"FileRename.cmd"等任意の名前で保存して実行します。
(↑2行目のpushd "C:\WINNT\Temp"の"~"の部分を実際にファイルが置かれているフォルダのフルパス名に書き替えてください。)
各行のコマンドの意味は説明しなくてもわかると思いますが、一応解説です。
1行目の"rem "を削除すると、コマンド行の表示等の一部を抑制できます。
2行目:ファイルのあるフォルダへ移動する。
3行目:ファイルのあるフォルダ直下に"Dest"フォルダを作成する。
4行名:変数"%%i"にそのフォルダ下の拡張子".mid"のファイルのファイル名が一つずつ入って、do以降のコピーコマンドが実行される。コピー元の"%%i"の部分はロングファイル名、コピー先は"Dest"フォルダ下の8.3形式ファイル名("%%~nxsi"は、変数"%%i"を8.3形式のファイル名に展開する時の書式。"for"コマンドのヘルプで確認できます。)
5行名:実行開始時のフォルダに戻る。
お礼
おはようございます。わざわざ、修正プログラムまで作成していただき、光栄の限りです。 やさしい方なんですね。そして、卓越したプログラミングに対する能力もお持ちの方だと、お見受けしました。 本当にありがとうございました。 なんてお礼を述べさせてよいのか、言葉がみつかりません。 機会がございましたら、また、是非、ご指南、頂ければ、と思います。