2

この問題に対処している投稿がすでにいくつかあることを私は知っています。ただし、小さなバッチスクリプトを機能させることができず、私は初心者なので、uがそれを解決するのを手伝ってくれると非常に嬉しく思います。

乱数と「_text」で名前が付けられたPDFファイルがたくさんあります(例:174098_text.pdf)。ここで、174098.pdfだけが残るようにファイルの名前を変更します(_textを削除します)。

これが私のファイル「Rename.cmd」の最新バージョンです。

@echo off
@setlocal
REM +++++++++++++++++++++++++++++++++++++++++++++++++
REM ++++++++ Umbenennen von Dateien ++++++++++++++++
REM +++++++++++++++++++++++++++++++++++++++++++++++++


REM +++ Dateinamen und Pfad ermitteln
FOR /f "delims=" %%D in ('Dir /b %Path%\*_*.pdf') do (
FOR /f "delims=_ tokens=1-2" %%I in ('%%D') do (
    ren %%D %%I.pdf
    )
)

Endlocal

あなたが私を助けて、私が間違ったことを説明してくれることを願っています。コードを実行すると、すべてのファイルが開きますが、そのうちの1つに名前を変更することはありません。

4

1 に答える 1

0

/ Fパラメータは、コマンドを開くため、および/またはコマンドの出力を取得するためのものです。したがって、/ Fに2番目を使用すると、CMDに「%% D」ファイルを実行するように指示しているため、これを実行できません。

パラメーターなしでFORを使用するか、フォルダーが再帰的に必要な場合は/Rパラメーターを使用できます。

そして、あなたはこの仕事のためにsetlocalを始める必要はありません

@echo off

FOR %%# in ("C:\Folder\*.pdf") DO (

    :: Set the "filename.extension"
    Set "File=%%~nx#"

    :: Rename it
    Call Rename "%%#" "%%FILE:_TEXT=%%"
    REM Explanation:
    REM Rename "filename_text.pdf" with "Filename(_Text=NOTHING).pdf"
    REM (That removes the "_TEXT" pattern in each filename)
)
pause&Exit

再帰が必要な場合は、次のことを覚えておいてください。

FOR /R "C:\Folder\" %%@ in (*.pdf)
于 2012-11-21T20:55:03.937 に答える