拡張子のないファイルを見つけて名前を変更しますか?
-
06-07-2019 - |
質問
つまり、拡張子のないファイルがたくさんあります。次のようなWindowsバッチスクリプトを作成します。
- (指定されたフォルダー内の)拡張子のないファイルを見つける
- ファイル名の末尾に.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"
所属していません StackOverflow