複数のフォルダの名前を変更する最初のx文字まで切り捨て


2

簡単な例:(私の問題は何千ものフォルダに関係している)

2つのフォルダがあります。

"A0000001_words_letters"

"A0000002_lots_of_numbers"

AXXXXXXXスタートを含むようにすべてのフォルダ名を自動的にトリミングする方法この開始は常に同数の文字になるので、事実上名前の最初のx文字をそのままにします。

ありがとう


あなたは私のメッセージをもらえますか?見えますか 答えを受け入れる それで、あなたはそれがどのように機能するか理解しますか?
Pimp Juice IT

回答:


0

あなたが使用することができます FOR / F フォルダー名部分を解析する区切り文字とトークンを設定し、後で使用するためにそれらを使用して変数を設定するためのループ REN コマンド。

あなたも利用したい Setlocal EnableDelayedExpansion それに応じて、ループ内の反復ごとにrenameコマンドで正しく使用される(実行時に解析されない)ために、ループ内で設定された変数の展開を処理します。

@ECHO

SET srcdir=C:\folder\path
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=*" %%F IN ('DIR /B /AD "%srcdir%\*"') DO (
    SET fname=%%~F
    SET fname=!fname:~0,8!
    SET fname=!fname!
    REN "%srcdir%\%%~XNF" "!fname!"
)
EXIT

その他の資料


0

常にある場合 _ 最初のx文字の後は、コマンドラインから次のように動作します(バッチは不要です)。

for /d %A in (*) do @for /f "delims=_ eol=_" %B in ("%A") do ren "%A" "%B"

上記のコマンドをバッチスクリプト内に入れる場合は、パーセントを2倍にしてください。

頼れない場合 _ 最初のx文字の後は、このコマンドはコマンドラインで動作します。最初の8文字は保持されます。

for /d %A in (*) do @set "folder=%A"&call ren "%^folder%" "%^folder:~0,8%"

あるいは、このバッチスクリプトを使って最初の8文字を保存することもできます。

@echo off
setlocal disableDelayedExpansion
for /d %%A in (*) do (
  set "folder=%%A"
  setlocal enableDelayedExpansion
  ren "!folder!" "!folder:~0,8!"
  endlocal
)

それともあなたは私を使用することができます JREN.BAT正規表現名前変更ユーティリティ 。これは、XP以降のWindowsマシンでネイティブに実行される純粋なスクリプト(ハイブリッドバッチ/ JScript)です。サードパーティのexeファイルは必要ありません。

最初からすべてを削除 _ 先に

jren "_.*" "" /d

最初の8文字を保存

jren "^(.{8}).*" "$1" /d

注意: フォルダではなくファイルの名前を変更しようとしている場合は、次のようにします。

ren *.txt ????????.txt

しかし残念ながら、フォルダの名前を変更するときにワイルドカードを使用することはできません。したがって、この方法はフォルダには役に立ちません。見る WindowsのRENAMEコマンドはワイルドカードをどのように解釈しますか? 詳しくは

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.