1

私の問題で私を助けてくれませんか。ディレクトリ内のいくつかのファイルの名前を変更する必要があり、Windows バッチ ファイルでそれを行う必要があります。ファイルの形式は、任意の数にすることVXXXX__<some-name>XXXXできます。ファイルの名前を some-name に変更して、 を削除する必要がありますV9999__。私は次のものを持っていますが、それは私にとってはうまくいきません

REM Get all files from directory
for %%f in (C:\data\\*.sql) do (
   echo %%~nf     
   how to split the filename and rename the file ???
)
4

2 に答える 2

1
@ECHO OFF
SETLOCAL
for /f "tokens=1*delims=_" %%f in ('dir /b /a-d U:\data\*_*.sql') do (
   echo REN U:\data\%%f_%%g %%g
)
GOTO :EOF

まず、/b /ad`dirに一致するファイルのディレクトリ (ドライブを変更しました...) でa を実行します - ディレクトリ名はありません。*_*.sql, in(bare) format - name only, no headers and

各行を で読み取り、区切り文字FOR /Fの前の部分を (トークン 1) に割り当て、区切り文字の後の行の残り (トークン "*") を次のメタ変数 (%%g) に割り当てます。_%%f

次に、名前を変更します-echo編集したところです

于 2013-10-15T06:00:52.053 に答える
1

for コマンドを使用して、区切り文字とトークン (部分文字列) を指定します。最初のトークン (%g) はアンダースコアの左側のテキストになり、残りのテキストは %h (次のトークン) に配置されます。

不要なエコーを削除するために編集

for %%f in (*_*.sql) do for /f "tokens=1,* delims=_" %%g in ("%%~f") do echo ren "%%~f" "%%~h"
于 2013-10-15T05:57:03.973 に答える