2017-03-29 20 views
0

何百もの画像をかなり頻繁に操作する必要があります。画像を取得すると1018u182012480d1j80.jpgタイプのファイル名になることが多いので、すべての画像を選択してから「F2」を押すと画像に名前が変更されます(1).jpg | image(2).jpg | ...など誰かが私にファイル名のかっことスペースを削除するバッチスクリプトを書くことができますか?すべてのファイル名からカッコと空白を削除するバッチスクリプト

可能であれば、私はそれを開いてカレントディレクトリを更新するためにバッチファイルを編集しなくてもいいですフォルダ、それは素晴らしいだろう。

バッチファイルはまったく分かりませんが、括弧は削除されていますが、ソースファイルを追加する必要があります。

@ECHO OFF 
SETLOCAL 
SET "sourcedir=C:\.." #Can we make this just find the location? 
FOR /f "delims=" %%a IN (
    'dir /b /s /a-d "%sourcedir%\*" ' 
) DO (
SET "name=%%~na" 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "newname=!name:)=!" 
SET "newname=!newname:(=!" 
IF "!name!" neq "!newname!" (
    IF EXIST "%%~dpa!newname!%%~xa" (ECHO cannot RENAME %%a 
    ) ELSE (REN "%%a" "!newname!%%~xa") 

) 
endlocal 
) 

答えて

1

スクリプトは、任意の!感嘆符が含まれていないファイル名/パス場合は動作するはずです。

引数としてフォルダパスを指定します(下記のサンプル呼び出しを参照)。これは、ファイルエクスプローラのでも&のドロップの機能をドラッグ(フォルダをドラッグすると、バッチにドロップ)することができます。 %~1の説明については、call /?またはCommand Line arguments (Parameters)をお読みください。

.jpgに限定されているファイルは、"%sourcedir%\*.jpg"FOR /f行です。 - 引数なし

@ECHO OFF 
SETLOCAL EnableExtensions DisableDelayedExpansion 

SET "sourcedir=%~1"        supplied string 
if NOT defined sourcedir SET "sourcedir=%CD%"  current directory if nothing supplied 

rem basic validity check 
if NOT exist "%sourcedir%\*" (
    echo wrong directory "%sourcedir%" 
    goto :next 
) 
FOR /f "delims=" %%a IN ('dir /b /s /a-d "%sourcedir%\*" ') DO (
    SET "name=%%~na" 
    SETLOCAL ENABLEDELAYEDEXPANSION 
     rem  remove) right parenthesis 
    SET "newname=!name:)=!" 
     rem  remove (left parenthesis 
    SET "newname=!newname:(=!" 
     rem  remove ↓ space(s) 
    SET "newname=!newname: =!" 
    IF "!name!" neq "!newname!" (
     IF EXIST "%%~dpa!newname!%%~xa" (
     ECHO cannot RENAME %%a 
    ) ELSE (
     rem operational RENAME command is merely ECHO-ed for debugging purposes 
     ECHO RENAME "%%a" "!newname!%%~xa" 
    ) 
) 
    ENDLOCAL 
) 
:next 
rem pause to see output 
pause 

サンプル・コールは、現在のディレクトリに適用されます: - 引数と

d:\bat\SU> D:\bat\SO\43097467.bat 
RENAME "d:\bat\SU\New Text Document.txt" "NewTextDocument.txt" 
RENAME "d:\bat\SU\Files\ruzna pisma.png" "ruznapisma.png" 
RENAME "d:\bat\SU\Files\volume control options.png" "volumecontroloptions.png" 
RENAME "d:\bat\SU\Files\volume mixer.png" "volumemixer.png" 
RENAME "d:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "ERKS100004_thumb.jpg" 
Press any key to continue . . . 

サンプルコール供給ディレクトリに適用されます。スペースを

d:\bat\SU> D:\bat\SO\43097467.bat D:\test\43097467 
RENAME "D:\test\43097467\image do - Copy (2).bmp" "imagedo-Copy2.bmp" 
cannot RENAME D:\test\43097467\image do - Copy (3).bmp 
RENAME "D:\test\43097467\image do - Copy (4).bmp" "imagedo-Copy4.bmp" 
Press any key to continue . . . 

サンプル呼び出し、引数なければなりません二重引用符で囲んでください:

d:\bat\SU> D:\bat\SO\43097467.bat "D:\bat\odds and ends\a b" 
RENAME "D:\bat\odds and ends\a b\c d\my list_Utf8.txt" "mylist_Utf8.txt" 
RENAME "D:\bat\odds and ends\a b\c d\e f\h i batch.bat" "hibatch.bat" 
RENAME "D:\bat\odds and ends\a b\c d\e f\System locale.png" "Systemlocale.png" 
Press any key to continue . . . 

d:\bat\SU> 
+0

大変ありがとうございました! –

関連する問題