感谢版主的耐心帮忙,谢谢
我将过程帖出来,希望能帮到一些朋友们。。谢谢
@echo off & SetLocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/s/a-d .\*.txt') do (
for /f "delims=" %%b in ("%%a\..") do (set dirname=%%~nxb)
for /f "usebackq delims=" %%c in ("%%~a") do (
set string=%%c
call set string=%%string:!dirname!\=%%
echo.!string!>>temp.txt
)
del "%%~a" && move temp.txt "%%~a"
)
rem 版主。。。还有一个小小小问题。。。。如果我要处理 “目录名\" 这个"\"要加在哪啊。。(加
rem 在!dirname!后面)
rem 只能修改没有特殊符号的文件夹里的东东
pause
rem 我把里面的b\ 去掉后会出现错误。。。。
因为我想有时候会想把那个 “目录名\"删掉而不是替换掉。。。
RE: 那你就去掉b\\
(这个版本对文件夹有特殊字符不能处理会出现错误,下面的版要用到sed.exe)
用sed
版本1
@echo off & SetLocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/s/a-d .\*.htm') do (
for /f "delims=" %%b in ("%%a\..") do (set dirname=%%~nxb)
sed "s/!dirname!\\/B\\/g" "%%~a" > temp.txt
del "%%~a" && move temp.txt "%%~a"
)
如果想要修改的是不是"目录然\"而是"目录名/"
sed "s/!dirname!\\/B\\/g" "%%~a" > temp.txt
修改成
sed "s/!dirname!\//B\//g" "%%~a" > temp.txt
天下苍狼 22:39:23
如果删除的话是不是就去掉 B\ ??
bat版主 22:39:36
嗯
天下苍狼 22:39:46
sed "s/!dirname!\////g" "%%~a" > temp.txt
这样是吧。。
bat版主 22:40:14
去掉最后一个/
版本2 测试未通过
@echo off
for /f "delims=" %%a in ('dir /b/s/a-d .\*.html .\*.ini') do (
for /f "delims=" %%b in ("%%a\..") do (set dirname=%%~nxb)
pushd "%%~dpa"
SetLocal EnableDelayedExpansion
sed "s:!dirname!::g" "%%~nxa"|more>temp.txt
popd&endlocal
del "%%~a" && move temp.txt "%%~a"
)
[ Last edited by gongcctv on 2008-2-21 at 12:01 AM ]