複数のファイルの名前の最後の部分を削除して名前を変更する方法

複数のファイルの名前の最後の部分を削除して名前を変更する方法

名前を変更するファイルがいくつかあります。

例: ERKS 400001_thumb.jpg
    エルクス 500124_thumb.jpg
    ERKS 100004_thumb.jpg

上記のファイルの名前を次のように変更します。

例: 00400001.jpg
    00500124 拡大画像
    00100004 イメージ

このコードを使用しましたが、必要な結果が得られませんでした。

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2!.!part3!"
)
GOTO EOF

上記のコードを実行すると、結果は次のようになります。

例: 00400001_thumb.jpg
    00500124_サムネイル
    00100004_サムネイル
ファイルの名前を変更するにはどうすればよいですか?

答え1

この特定のケースを説明するには、以下の構文を使用する必要があります。追加の区切り文字アンダーバーを追加する必要があります。_文字と、もう 1 つのトークンも追加します1-4。追加のトークンと区切り文字を使用して、part4変数を追加し、期待どおりの結果が得られるようにしました。

これは私の回答に関連しているようですがこの郵便受け、私もこれに協力しようと思いました。

すべてのJPGファイル

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SET "part4=%%~I"
  REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"

)
GOTO EOF

「thumb」という単語が含まれる JPG ファイルと「thumb」という単語が含まれない JPG ファイルを含むフォルダーがある場合、質問で説明されているように、以下のスクリプトを使用して「thumb」という単語が含まれるファイルのみを変更できます。

Thumb という名前の JPG ファイルのみ

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....

FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*thumb.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SET "part4=%%~I"
  REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
  ECHO "%SourceDir%\!part1! !part2!!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF

注記: ここに画像の説明を入力してください


その他のリソース

答え2

次のコード スニペットは、2 つの解決策を示しています。

脚本(操作RENAMEコマンドはECHOデバッグとデモンストレーションの目的でのみ表示されることに注意してください):

@ECHO OFF >NUL
SETLOCAL EnableExtensions DisableDelayedExpansion

SET "SourceDir=D:\bat\SU\Files\1126981" change to meet your circumstances

echo if _thumb part is fixed
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  SET "part1=%%~F" 
  SET "part2=%%~G" 
  SET "part3=%%~H"
  SETLOCAL EnableDelayedExpansion
    echo REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2:_thumb=!.!part3!"
  ENDLOCAL
)

echo(
echo if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
FOR /F "TOKENS=*" %%g IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
  FOR /F "TOKENS=1-4 DELIMS=_. " %%F IN ("%%~g") DO (
    echo REN "%SourceDir%\%%~g" "00%%~G.%%~I"
  )
)

出力:

==> D:\bat\SU\1126981.bat
if _thumb part is fixed
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009nail!.jpg"

if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009.jpg"

==>

答え3

これは私がしばらく前から持っているコードです。サフィックス (jpg)、文字列ターゲット (_thumbs)、最後に置換文字列 (文字列を空の文字列に置き換える場合は空白のままにします) を入力するように要求します。

@echo off
Setlocal enabledelayedexpansion

ECHO Enter the suffix target (e.g. txt, jpg):
Set /P Suffix= 
ECHO Enter Target String:
Set /P Pattern=
ECHO Enter Replacement String (or leave blank):
Set /P Replace=

For %%# in ("*.%Suffix%") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

あなたの場合: このバッチ ファイルを 1 回目に実行します: ターゲット "ERKS " 置換 "00";それなし引用符。2 回目の実行: ターゲット "_thumbs" が "" に置き換えられました。置換を空白 (文字なし) にしたい場合は、何も入力せずに Enter キーを押します。

答え4

もしあなたが

00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg

残りは簡単です。ファイルの文字数が同じなので、

ren *.jpg ????????.jpg

そして次のようになります:

00400001.jpg 00500124.jpg 00100004.jpg

関連情報