ファイルグループ内の最後の10文字を除くすべての文字を削除する方法


0

どのように私はのようにファイルのグループを改名することができますか

admin_ball_126608454.gma
another_thing_384157357.gma

ds_126608454.gma
ds_384157357.gma

回答:


0

このスクリプトを試すことができます。ファイルの名前を変更しようとするたびにプロンプ​​トが表示されます。スクリプトからIF..ELSE句を削除すると、この動作を回避できます。誤ってフォルダ名を変更したり、ファイル名を誤った名前に変更したりしないようにするためのプロンプトが追加されました。

@echo off
setlocal EnableDelayedExpansion
SET /P path=Enter the path please :
ECHO The Path entered is %path%. 
CD %PATH%
ECHO Current Directory is %CD%
FOR /R %path% %%G IN (*.*) DO (
SET name=%%~nG
SET last=!name:~-10!
SET/P cho="ECHO File !name!%%~xG will be renamed to ds_!last!%%~xG Do you want to continue (y/n) ?"
IF !cho!==y  (REN "!name!%%~xG" "ds_!last!%%~xG") ELSE (ECHO Not Renamed)
)
pause

2

あなたは部分文字列または正規表現を使うことができます。追加 -whatif テストを実行するために - しかし何も変更せずに。 PowerShellでこれを実行する方法はもっとたくさんあるはずです。

部分文字列

Dir "C:\yourfolder"  | ren -NewName {
    "ds" + $_.basename.substring($_.basename.length-10,10) + $_.extension
} -whatif

先読みを使用した正規表現

Dir "C:\yourfolder" | ren -NewName {$_.name -replace "^.*(?=.{10}\.)","ds"}

私たちは 先のことを考える (?= ) すべてにマッチする ^.? 最後の10文字の前 .{10}

キャプチャグループを使用した正規表現

Dir "C:\yourfolder" | ren -NewName {$_.name -replace '(.*)(.{10}\.)', 'ds$2'}

2つ使っています キャプチャグループ (...)(...) 2番目のものだけを $2。ここではあなたが使用する必要があります ' の代わりに "

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