试图用批处理替换Idrive日志文件里面的驱动器指定。 业余程序员试图了解批处理文件多年,但仍然不懂高级技术。 我怀疑'/'反斜杠需要被转义,但我试了都没用。
样本日志输入。
[C:\Users\rh56\Music\desktop.ini]
[D:\clients\]
[D:\Orion\]
[D:\rigel\]
[SUCCESS] [03/06/2020 5:02:19] [[Full Backup] C:\stuff\2019-01-14 11_54_14-Cartoon Caption Contest _ The New Yorker.png][Size: 191.03 KB]]
[SUCCESS] [03/06/2020 5:02:19] [[Full Backup][C:\junk\2019-05-01 20_22_26-Greenshot.png][Size: 384.27 KB]]
[SUCCESS] [03/06/2020 5:02:20] [[Full Backup]C:\arbitrage\EuroYen30day\2019-05-01 20_23_06-Window.png][Size: 271.33 KB]]
希望的输出: (注意用M:\代替C:\)
[M:\Users\rh56\Music\desktop.ini]
[D:\clients\]
[D:\Orion\]
[D:\rigel\]
[SUCCESS] [03/06/2020 5:02:19] [[Full Backup] M:\stuff\2019-01-14 11_54_14-Cartoon Caption Contest _ The New Yorker.png][Size: 191.03 KB]]
[SUCCESS] [03/06/2020 5:02:19] [[Full Backup][M:\junk\2019-05-01 20_22_26-Greenshot.png][Size: 384.27 KB]]
[SUCCESS] [03/06/2020 5:02:20] [[Full Backup][M:\arbitrage\EuroYen30day\2019-05-01 20_23_06-Window.png][Size: 271.33 KB]]
我的代码。
set vSearch=C:\\ & set vReplace=M:\\
setlocal enableextensions disabledelayedexpansion
::https://stackoverflow.com/questions/23075953/batch-script-to-find-and-replace-a-string-in-text-file-without-creating-an-extra/23076141
echo. & echo DEBUG DEBUG DEBUG & pause & echo.
set "vtextFile=C:\idriveLogChecker\molly.log"
for /f "delims=" %%i in ('type "%vtextFile%" ^& break ^> "%vtextFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%vtextFile%" echo(!line:%vSearch%=%vReplace%!
endlocal
)
echo. & echo DEBUG DEBUG DEBUG & pause & net use & set v & echo on & echo. & cmd /K
有没有什么更简单的高度自动化的方法 可以让你的学习曲线最小化? 谢谢您的帮助
你的代码对我来说很好--当我只修改了一行。
set "vSearch=C:\" & set "vReplace=M:\"
我只改了一行: \
逃不掉的(另一个 \
无论如何都是错误的。转义符是 ^
),更重要的是:你的原始行将第一个变量设置为 C:\\<SPACE>
所以没有什么需要替换的。
请注意引号的位置--它们不会成为变量名或值的一部分,但这是推荐的语法,避免了杂乱的空格,并且对一些有毒字符是安全的,如 <>&|
.