1

* (複数のスペース文字) を (単一のスペース文字) に置き換える必要がある正規表現を使用して、コマンド ライン (または .bat ファイル) を作成しようとしています。複数の空白文字を 1 つの空白文字だけに置き換えます。Unix では sed を使用できます。ただし、私たちの場合、これは不可能であり、sed のインストールはオプションではありません。何か案は?

4

1 に答える 1

0
@echo off
set file_name_with_spaces="_ file    name   _.txt"

rem --- '?' is forbidden in file names ---
set file_name_with_no_spaces=%file_name_with_spaces: =?%
echo %file_name_with_no_spaces%

rem --- we need to to replace the quewstion marks that have primer numbers count and their modulus --
set file_name_with_no_spaces=%file_name_with_no_spaces:??=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:???=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:?????=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:???????=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:????????????=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:???????=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:???????=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:???=?%
set file_name_with_no_spaces=%file_name_with_no_spaces:??=?%

set file_name_with_single_spaces=%file_name_with_no_spaces:?= %
rem ---  ---

echo %file_name_with_single_spaces%
ren %file_name_with_spaces% %file_name_with_single_spaces% 

これはほとんどの場合に機能するはずです。ファイルに非常に多くのスペースがある場合は、さらに式を追加する必要があります? (for ループに挿入することもできますが、これは簡単でした :-) )。

于 2012-11-29T08:21:00.343 に答える