批处理脚本:将文件名中的每个“@”替换为网络驱动器(包括子文件夹)中的“_”

Batch-Script: Replace every "@" in file name with "_" in network drive including subfolders

我的问题是:

我想替换文件名中的每个特殊字符,例如“@”。

示例:

旧文件:test@home.txt
新文件:test_home.txt

这应该在一个特别选择的文件夹中完成,包括子文件夹。用户应轻松更改位置(文件夹)。

好吧,我会试一试,但我不确定如何:

%PATH% = G:\Tests\Folder

::Replace '@' with '_'
   SET _test=test@file.txt   
   SET _result=%_test:_=file
   ECHO %_result%          =test_file

set替换字符串的语法:

set "var1=my old hat"
set "var2=%var1:old=new%"
echo %var1% was better than %var2%

获取所有 txt 文件:

for %%i in (*.txt) do (
  echo %%i
  rem substitution does not work with special %%i variable type
  set "oldname=%%i"
  set "newname=!oldname:@=_!"
  echo rename "!oldname!" "!newname!"
)

为什么 ! 而不是 %?参见