我正在使用 mediainfo 从音频文件中提取元数据,然后使用其信息生成文件夹树。由于此元数据允许使用星号等特殊字符,因此无法生成文件夹。我似乎无法使用此脚本替换星号。我相信这可能与
*
是通配符这一事实有关。对我有什么想法或问题吗?
[mcve]
@echo off
setlocal enabledelayedexpansion
set "album_name=F*ck Love (Savage)"
set "album_folder=!album_name:*=_!"
set album_folder
endlocal
我期待以下结果:
album_folder=F_ck Love (Savage)
我尝试了各种不同的方法来尝试更换
*
,但无济于事。
set "album_folder=!album_folder:^*=_!"
我肯定错过了什么。
被问过很多次。没有通用的解决方案 afaiaa.
你可以使用这样的东西:
SETLOCAL
SET "string=hello*this&is*a*string"
:loop
FOR /f "tokens=1*delims=&*" %%b IN ("%string%") DO IF "%%c" neq "" SET "string=%%b_%%c"&GOTO loop
SET str
它并不完美,但可能足以满足您的应用。
OTT,如果您能够使用 3rd 方实用程序,那么
sed
或 (g)awk
可能是一个解决方案。