質問

つまり、拡張子のないファイルがたくさんあります。次のようなWindowsバッチスクリプトを作成します。

  1. (指定されたフォルダー内の)拡張子のないファイルを見つける
  2. ファイル名の末尾に.blaを追加

私はそのようなWindowsバッチスクリプトです。提案?

役に立ちましたか?

解決

Windowsバッチファイルの場合、これは拡張子が.blaの拡張子のないファイルのみの名前を変更します。

rename *. *.bla

最初の引数は星とドットであることに注意してください:*。

2番目の引数:* .bla

開始ドット(*。)の組み合わせは、このコンテキストで拡張子のないファイルを表します。

前:

06/21/2009  11:57 PM                 6 test
06/21/2009  11:57 PM                 7 test.exe
06/21/2009  11:57 PM                 7 test2

後:

06/21/2009  11:57 PM                 6 test.bla
06/21/2009  11:57 PM                 7 test.exe
06/21/2009  11:57 PM                 7 test2.bla

追加の注意:反対のコマンドラインは、すべての.blaファイルの名前を拡張子なしファイルに変更します。

編集

サブディレクトリ全体に拡張子のないファイルの名前を再帰的に変更する場合(パス内のスペースはサポートしません):

@echo off
FOR /F %%i in ('dir /b/s/A-d') DO (
  if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)

EDIT2:

サブディレクトリ全体で拡張子のないファイルの名前を再帰的に変更する場合(パス内のスペースをサポート):

@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
  if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)

他のヒント

これは、拡張子のないファイルの名前を再帰的に変更するための別の可能なコマンドです(ファイルパスにスペースが含まれていないことを想定):

for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"

バッチバージョン(を2倍にした):

@echo off
for /f %%i in ('dir *. /b /s /a-d') do (
   rename "%%~fi" "%%~ni.bla"
)


ファイルまたはフォルダー名にスペースが含まれる場合、代わりに次のコマンドを使用します:

for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"

バッチバージョン:

@echo off
for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
   rename "%%~fi" "%%~ni.bla"
)

編集:パス内のスペースをサポートする、さらに短いワンライナー:

for /r %i in (*.) do ren "%~fi" "%~ni.bla"

バッチバージョン:

@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"

サブディレクトリでこれを行うには、これを使用します:

 for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla

これをバッチファイルで使用している場合は、「%」を2倍にする必要があります

 for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla

編集:

ディレクトリ名にスペースが含まれている場合は、これを試すことができます(バッチバージョン):

 for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top