3

私は次のように整数拡張子を持つ未知の数のファイルを生成するプログラムを持っています。

ここに画像の説明を入力してください

それぞれに付け加えたい.eps。DOSバッチファイルでこれを行う方法は?

検索式がわからないので、以下は使えません。

for %%x in (Main.<what>) do rename "%%x" "%%x.eps"

注:整数以外の拡張子を持つ同じ名前のファイルは、そのままにしておく必要があります。

4

2 に答える 2

3
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のドットなし)を数値に変換しようとします。それが実際に数値(ゼロより大きい)である場合は、名前を変更します。

于 2011-07-30T03:08:42.710 に答える
1

これはディレクトリをループするはずです。これがどのように機能するかについての説明です:

tokens = 1-2は、ファイル名の最初と2番目の部分だけを気にすることを意味します。

delims =は、ファイル名.のでトークンを分割することを意味します。.

dir /bファイルを一覧表示するだけで、コマンドに通常表示される.またはを表示しないことを意味します。そこにディレクトリを配置するか、同じファイルディレクトリから実行する必要があります。..dir

LSSacharは常にGREATERTHANを返します。これが、このように機能します。私は9999を選びました、あなたは何でも選ぶことができます。

最後に、ファイル名(%%A)の最初の部分を取得し、次に拡張子( )を使用して、拡張子が付いたファイル名()%%Bの最初の部分に名前を変更します。%%Aeps

for /f "tokens=1-2 delims=." %%A in ('dir /b') do if %%B LSS 9999 rename %%A.%%B %%A.%%B.eps

これをバッチファイルに入れて実行します。

注:同じファイル名に名前を変更することはできないため、を使用し%%A.%%B.epsました。

于 2011-07-30T00:11:48.537 に答える