Windowsフォルダ内のすべてのファイルのファイル名に対して特定の文字を削除するか、バッチファイルの実行によって特定の文字を他の文字に置き換えるにはどうすればいいですか? DOSコマンド?フォルダ内のすべてのファイルのファイル名から特定の文字を置換または削除する
答えて
DOSプロンプトでよりスマートに行うには、PowerShellを使用します。ここでは、スペースを含むカレントディレクトリ内のすべてのファイルとディレクトリの名前を一括して一括して名前を変更して、_
のアンダースコアに置き換える方法を示しました。
Dir |
Rename-Item -NewName { $_.Name -replace " ","_" }
EDIT:
任意に、Where-Object
コマンド(コマンドレット)連続レット対象外オブジェクト外フィルタに使用することができます。
はディレクトリのみを処理するには、任意のドキュメントファイル
Dir | Where-Object { $_.Name -notmatch "\.(doc|xls|ppt)x?$" } | Rename-Item -NewName { $_.Name -replace " ","_" }
をスキップする(前の3.0バージョン)
:以下は、それはあなたが余裕ができる柔軟性を説明するためにいくつかの例であり、Dir | Where-Object { $_.Mode -match "^d" } | Rename-Item -NewName { $_.Name -replace " ","_" }
PowerShell v3.0に新しい
Dir
フラグが導入されました。そこにDir -Directory
を使用することもできます。特定の文字を削除したり、名前を変更するには、既にアンダースコア(もしくは他の文字)を含む任意のファイルをスキップするには-
Dir | Where-Object { -not $_.Name.Contains("_") } | Rename-Item -NewName { $_.Name -replace " ","_" }
この場合、rename
コマンドをお勧めします。詳細については、コマンドラインで「ren /?
」と入力してください。
このバッチファイルは役に立ちますが、いくつかの制限があります。 filename =と%は置き換えることができません(ここのメモリから)。ファイル名の^も問題になります。それは文字の束はアンダースコアで置き換えられるしようとしている立っているように=
後の文字で:
後に文字を置き換え下部ブロック内のすべての行に、この部分%newname: =_%
で
echo
を削除するとrenコマンドが有効になります。これは、単にコンソールウィンドウにコマンドを出力するためです。
/s
をDIRコマンドの部分に追加しないと、カレントフォルダの下のすべてのフォルダも処理されます。
特定の文字を削除するには、=記号の後にある文字を削除します。 %newname:z=%
のように、すべてのz文字が削除されます(大文字と小文字は区別されません)。
@echo off
for /f "delims=" %%a in ('dir /a:-d /o:n /b') do call :next "%%a"
pause
GOTO:EOF
:next
set "newname=%~nx1"
set "newname=%newname: =_%"
set "newname=%newname:)=_%"
set "newname=%newname:(=_%"
set "newname=%newname:&=_%"
set "newname=%newname:^=_%"
set "newname=%newname:$=_%"
set "newname=%newname:#=_%"
set "newname=%newname:@=_%"
set "newname=%newname:!=_%"
set "newname=%newname:-=_%"
set "newname=%newname:+=_%"
set "newname=%newname:}=_%"
set "newname=%newname:{=_%"
set "newname=%newname:]=_%"
set "newname=%newname:[=_%"
set "newname=%newname:;=_%"
set "newname=%newname:'=_%"
set "newname=%newname:`=_%"
set "newname=%newname:,=_%"
echo ren %1 "%newname%
PowerShellの答えは良いですが、あなたのすべてのファイルが(彼らに不要な文字を持っていない限り、名前の変更-Itemコマンドは、同じターゲットディレクトリでは動作しません。重複が見つかると失敗します)。あなたが私に似ているといい名前と悪い名前のミックスを持っていた場合
、(アンダースコアとスペースに置き換えられます)の代わりにこのスクリプトを試してください: `どこ-Object`の使用が何であるかを
Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace(" ", "_") }
この解決法は私のために働いていました(答えが受け入れられるとエラーが発生するため、言及したように、置き換えられる文字が含まれていないファイルがいくつかあると思われます)。 +1、この文脈では、 '-Recurse'フラグと' Move-Item'コマンドについてもう少し説明するのはすばらしいことです。 – j4v1
- 1. 特定のフォルダからすべてのファイルとフォルダを削除する
- 2. ファイル名にlinuxフォルダの特定の文字が含まれている場合、ファイルを削除するには
- 3. powershellのファイル名から特殊文字を削除する
- 4. 文字を削除してファイル名を置換するPythonスクリプト
- 5. 特定の文字で始まるフォルダ内のすべてのファイルを開く
- 6. 特定の名前を持たないフォルダ内のすべてのファイルを削除する
- 7. 特定のディレクトリにあるすべてのファイルとフォルダの文字列を検索して置換します。
- 8. Python:特定の文字列をファイルから削除する
- 9. ディレクトリ内のファイルから特定の文字列を削除する
- 10. フォルダ内のファイル名から空白を削除する
- 11. フォルダ内のすべてのファイルを削除しますが、最後のファイルは削除しますか?
- 12. Powershellファイル名から特殊文字を削除する
- 13. Applescriptは特定のフォルダ名からすべてのファイルを移動します。
- 14. 任意のフォルダからすべてのファイルを削除する
- 15. サブフォルダからフォルダのすべてのファイルを削除する
- 16. 指定したフォルダ内のファイルとフォルダを削除する
- 17. VBでフォルダ内のすべてのExcelファイルを削除する
- 18. VB.Netフォルダ内のすべてのファイルを削除する
- 19. フォルダ内のすべてのファイルを削除する
- 20. ファイル内の特定の文字のランダム置換(ルビー)
- 21. C#Winforms - 特定のファイル名のハードドライブ上のフォルダを削除しますか?
- 22. 親フォルダ内の特定の拡張子を除くすべてのサブフォルダとファイルを削除します
- 23. bashのファイルから特定の文字以外のすべてを削除する方法は?
- 24. リスト内のエントリから特定の文字を削除する
- 25. 特定の文字列をファイル名に置き換えますか?
- 26. ファイル名に特殊文字を含むファイルを削除する
- 27. ファイル内の特定の文字列で始まる特定の行を検索して置き換えます。
- 28. 特定の拡張子を除くフォルダ内のすべてのファイルを削除する
- 29. ファイル内の特定の行からハイフンを削除する
- 30. フォルダ内の複数のファイル名から1つ以上のサブ文字列を置き換えます。
。 [aphoe答え](http://stackoverflow.com/a/23555996/1275574) 'Where-Object'なしで同じことを実行してください – AminM
@JesonParkこれを指摘してくれてありがとう。 'Where-Object'の使い方についていくつかの例を追加しました。 –
Rename-Item:送信元と送信先のパスが異なる必要があります。エラー:/ –