0

フォルダに大量のファイルがあります。ファイル名の形式は「ID FIRSTNAME LASTNAME.extension」です。ID は 7 桁または 6 桁と X、つまり 1234567 または 123456X です。拡張子は、pdf、doc、または docx のいずれかです。各変数間の区切り文字はスペース " " です。例 "1234567 Jill Smith.pdf"

現在の名前を並べ替えて、各ファイルの名前を変更する必要があります。「ID FIRSTNAME LASTNAME.extension」ではなく、「LASTNAME_FIRSTNAME_ID.extension」にする必要があります。したがって、LASTNAME を ID に置き換え、すべての空白をアンダースコア "_" に置き換える必要があります。拡張子は変更しない必要があります。上記の例を使用すると、「Smith_Jill_1234567.pdf」となります。

簡単なクリーニング(ミドルネームなし)を行いましたが、名前変更コマンドを最初の区切り文字ではなく2番目の区切り文字で機能させる方法がわかりません。Windows バッチ ファイルの名前変更を見てきましたが、これは最初の区切り文字にのみ作用します。

サード パーティ ソフトウェアにアクセスできません (アクセス許可が制限されています)。Windows 7 を実行しており、Powershell が使用できることを確認しました。

これについて何か助けていただければ幸いです、ありがとう

4

2 に答える 2

0
ls | Rename-Item -NewName {$_.name -replace '^(\w+) (\w+) (\w+)', '$3_$2_$1'}
于 2013-11-08T06:39:12.613 に答える
0
@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=c:\sourcedir"
FOR /f "tokens=1-4delims=. " %%a IN (
 'dir /b /a-d "%sourcedir%\*" '
 ) DO (
  SET "reqxt="
  IF /i "%%d"=="pdf" SET reqxt=Y
  IF /i "%%d"=="doc" SET reqxt=Y
  IF /i "%%d"=="docx" SET reqxt=Y
  IF DEFINED reqxt (
   ECHO REN "%sourcedir%\%%a %%b %%c.%%d" "%%c_%%b_%%a.%%d"
  )
)
GOTO :EOF

RENAMEソースディレクトリ名を変更した後、必要な sを報告する必要があります。ECHO実際に名前変更を実行するには、キーワードを削除してください。

于 2013-11-08T06:47:37.023 に答える