0

ファイル名を最初の 16 文字まで削除して、ディレクトリ内の一連のファイルの名前を変更したいのですが、バッチ ファイルで forfiles コマンドを使用するときに @FNAME の部分文字列を取得する方法がわかりません。

助けていただければ幸いです。

ありがとう

ローランド

4

2 に答える 2

2

ファイルごとに新しいコマンドを生成するため、同じバッチで変数を設定して使用forfilesできるとは思わないため、これを行うのは非常に難しいでしょう("cmd /c command")。

ただし、単純なforループを使用して同じ機能を簡単に実現できます。

setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir C:\yourdir /s /b') do (
set file=%%~na
set ext=%%~xa
set new=!file:~0,16!
ren %%a !new!!ext!
)

これは、すべてのサブディレクトリも再帰しま​​す。選択したフォルダーだけが必要な場合は/s、コマンドからを削除しますdir

また、ファイル名だけを削除しているため、後でファイル拡張子を追加するようにしました。そうしないと、拡張子の文字が 16 文字の制限にカウントされます。

于 2013-01-17T11:54:35.033 に答える