2017-01-04 8 views
0

私は01_tiago_miguel.txtという名前のファイルと、このコードを持って働いていない名前の変更します最初の3文字。CMDバッチが正しく

echoを削除すると、miguel.txtという名前に変更されますが、エコーの出力が正しいと思われるのであまり意味がありません。 理由は何ですか?

+0

[ディレクトリのツリーを列挙する\ for \ 'または\ for \]の可能な複製?](http://stackoverflow.com/questions/31975093/at-which-point -d-for-for-r-enumerate-the-directory-tree) – aschipfl

+0

マスクを '* _ *'から '?? _ *'に変更すると、実行時に再度ファイルの名前を変更するのを避けることができますこのスクリプトは2回目です... – aschipfl

+0

_これが私がパターンを特に言及し、最後の質問に答えて使用した理由です。私の代わりの解決策は、ファイルを再処理できないように移動して別のディレクトリまたは別のディレクトリに名前を変更することです。 – Compo

答えて

1

使用は

for /f "delims=" %%A in (`dir /b /a-d "*_*"') do (

何が起こっていることは、あなたのechoファイル(当たり前)が、それがない削除、名前を変更しないということです。新しいファイル名がtiago_miguel.txtあるので

ren "01_tiago_miguel.txt" "tiago_miguel.txt"

は、そう

ren "tiago_miguel.txt" "miguel.txt"が実行される

しかし

tiago_miguel.txt*_*マスクに適合し、実行されたので、新しいファイル名がmiguel.txtです。

dirコマンドを使用すると、ディレクトリリストが実行されてリストが処理されるため、変更が加えられた場合は再起動されません。

関連する問題