私は次のように整数拡張子を持つ未知の数のファイルを生成するプログラムを持っています。
それぞれに付け加えたい.eps
。DOSバッチファイルでこれを行う方法は?
検索式がわからないので、以下は使えません。
for %%x in (Main.<what>) do rename "%%x" "%%x.eps"
注:整数以外の拡張子を持つ同じ名前のファイルは、そのままにしておく必要があります。
私は次のように整数拡張子を持つ未知の数のファイルを生成するプログラムを持っています。
それぞれに付け加えたい.eps
。DOSバッチファイルでこれを行う方法は?
検索式がわからないので、以下は使えません。
for %%x in (Main.<what>) do rename "%%x" "%%x.eps"
注:整数以外の拡張子を持つ同じ名前のファイルは、そのままにしておく必要があります。
setlocal EnableDelayedExpansion
for %%x in (Main.*) do (
set ext=%%~Xx
set /a num=!ext:~1!
if !num! gtr 0 rename "%%x" "%%x.eps"
)
最初のSETは、ドット(〜X付き)を含むファイル名の拡張子だけを取得します。2番目のSET/Aは、拡張子(:〜1のドットなし)を数値に変換しようとします。それが実際に数値(ゼロより大きい)である場合は、名前を変更します。
これはディレクトリをループするはずです。これがどのように機能するかについての説明です:
tokens = 1-2は、ファイル名の最初と2番目の部分だけを気にすることを意味します。
delims =は、ファイル名.
のでトークンを分割することを意味します。.
dir /b
ファイルを一覧表示するだけで、コマンドに通常表示される.
またはを表示しないことを意味します。そこにディレクトリを配置するか、同じファイルディレクトリから実行する必要があります。..
dir
LSS
achar
は常にGREATERTHANを返します。これが、このように機能します。私は9999を選びました、あなたは何でも選ぶことができます。
最後に、ファイル名(%%A
)の最初の部分を取得し、次に拡張子( )を使用して、拡張子が付いたファイル名()%%B
の最初の部分に名前を変更します。%%A
eps
for /f "tokens=1-2 delims=." %%A in ('dir /b') do if %%B LSS 9999 rename %%A.%%B %%A.%%B.eps
これをバッチファイルに入れて実行します。
注:同じファイル名に名前を変更することはできないため、を使用し%%A.%%B.eps
ました。