0

基本的に、多くのファイルがあり、通常は .xls または .pdf 形式で、すべてのファイルから最初の 8 文字を削除する必要があります。標準形式は次のようなものです。

abc 123 restofffilenameiwanttokeep.pdf

「abc 123」を取り除きたいのですが、一部のファイルでは機能するように見えるコードがいくつかありますが、他のファイルでは機能しないようです。以下を参照してください-

@echo off
setlocal enabledelayedexpansion
LFNFOR On

for %%a in (*.pdf) do (
set oldName=%%a
set newName=!oldName:~8!
Ren "%%a" "!newName!"
)
endlocal

一部のファイルでは機能しますが、他のファイルでは最大10文字が削除されましたが、最後の文字がスペースであるために理由がわかりませんか? しかし、もしそうなら、なぜそれは一部で機能し、他の機能では機能しないのですか? その非常に当惑します。

私は Win XP を使用しており、これを行うためにバッチ ファイルを使用しています。

どんな助けでも大歓迎です。

アダム

4

2 に答える 2

0

ピーター・ライトが問題を発見したようです。forループを次のように変更する必要があります。

for /f "delims=" %%a in ('dir /b *.pdf') do (
...
)

コマンドを/f一重引用符で囲んだオプションは、それを実行して結果をループする必要があることをループに伝えます。dirfordir

"delims="後にある/fと、単語間の区切り文字が一致しなくなります。それ以外の場合は、%%aスペースで区切られた最初の単語のみが返されます。

また、コマンドの/bオプションはdir、名前だけのディレクトリ リストの裸のバージョンを提供するだけです。

于 2013-05-11T16:02:24.297 に答える