【发布时间】:2017-04-28 18:53:54
【问题描述】:
我想放一个批处理文件来修改 GPO 文件中的一行。
我遇到的问题是每个用户的路径都不同。
所以,我尝试在路径中使用通配符,但它不起作用。
这个蝙蝠正在工作:
@echo off &setlocal
setlocal enabledelayedexpansion
set "search=test"
set "replace=test2"
set "textfile=%appdata%\Thunderbird\Profiles\5xu9scdm.default\prefs.js"
set "newfile=%appdata%\Thunderbird\Profiles\5xu9scdm.default\prefs2.js"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
set "line=!line:%search%=%replace%!"
echo(!line!
))>"%newfile%"
del %textfile%
rename %newfile% prefs.js
endlocal
但如果我在集合中使用通配符,它就不再起作用了。
@echo off &setlocal
setlocal enabledelayedexpansion
set "search=test"
set "replace=test2"
set "textfile=%appdata%\Thunderbird\Profiles\*.default\prefs.js"
set "newfile=%appdata%\Thunderbird\Profiles\*.default\prefs2.js"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
set "line=!line:%search%=%replace%!"
echo(!line!
))>"%newfile%"
del %textfile%
rename %newfile% prefs.js
endlocal
我该如何解决这个问题?
【问题讨论】:
-
通配符只能用在路径的最后一个元素中。
-
而
for /F无法解析,因此您需要环绕for /D循环来执行此操作...
标签: batch-file set wildcard