Batch file 读取文本文件后更改文件夹名称的批处理代码
有人在这个网站上给我这个代码 代码可以完美地找到此代码Batch file 读取文本文件后更改文件夹名称的批处理代码,batch-file,cmd,rename,directory,findstr,Batch File,Cmd,Rename,Directory,Findstr,有人在这个网站上给我这个代码 代码可以完美地找到此代码 SMTP_电子邮件_地址类型=SZname@company.comSMTP电子邮件地址 我要密码找到这个 <SMTP_Email_Address type="SZ">abc@abc.com</SMTP_Email_Address> abc@abc.com 由于此标志>>“代码不起作用” 通过在文本文件中找到的电子邮件更改文件夹名称,我想我理解这个问题。 需要使用插入符号(^)转义特殊字符 例如 替换 与 “^*[
SMTP_电子邮件_地址类型=SZname@company.comSMTP电子邮件地址
我要密码找到这个
<SMTP_Email_Address type="SZ">abc@abc.com</SMTP_Email_Address>
abc@abc.com
由于此标志>>“代码不起作用”
通过在文本文件中找到的电子邮件更改文件夹名称,我想我理解这个问题。 需要使用插入符号(^)转义特殊字符 例如 替换 与
“^*[^][^]*@[^][^]*\.[^][^]**^”
只要相关的XML行的格式与您指定的完全一致,以下内容就可以使用。但这是有风险的,因为XML的格式可能会改变并且仍然有效,但它会破坏这段代码。批处理不是解析XML的好选择,除非您确切知道XML的格式
编辑-这段原始代码大部分有效,但有两个问题:
1) 排序操作可能会导致使用错误的匹配地址行。它应该使用第一个找到的匹配行
2) 脚本可能会尝试重命名根位置。Windows将不允许这样做,因为批处理脚本的当前目录已设置为该位置
@echo关闭
按下“您的根位置”
对于/f“令牌=1,3 delims=:”%%A in(
'findstr/srbc:[^][^]*@[^][^]*\.[^][^]*'file1.txt^排序/r'
)如果(“%%A\..”中的%%F存在“%%A”,则执行“%%fF”%%B”
邻苯二胺
以下代码已修复,以正确使用第一个匹配的地址行。它也不会尝试重命名根位置。但如果任何进程当前依赖于该位置,则其他重命名可能会失败
@echo关闭
setlocal
按下“YourRootLocation”
设置“搜索=[^][^]*@[^][^]*\.[^][^]*”
对于/f“eol=:delims=“%%A in(
'findstr/srmbc:“%search%”file1.txt^排序/r'
)do for/f“tokens=2 delims=“%%B in(
'findstr/rbc:'%search%''%A''
)如果(“%A\..”中的%%F存在“%%A”,则执行“%%~fF”neq”%CD%”(
echo ren“%%~fF”“%%B”
ren“%%~fF”“%%B”
)
邻苯二胺
我正试图编辑您的帖子,使其更具可读性,tbh我认为您应该将其回滚到我所说的方式,这使其更易于理解。我们同时编辑,所以我不知道您如何编辑:)您可以做您想做的事兄弟:)别担心,巴德,其他人已经编辑过;)哦,我想我忽略了什么,findstr有自己的语法(反斜杠)来转义特殊字符。但我尝试了各种组合,但也无法实现:(谢谢你,我尝试了这个,但没有成功,这个xml文件没有改变代码time@Hauari-我进行了测试,除了2个小错误外,原始代码大部分都有效。我用新版本编辑了我的答案。如果这对你不起作用,那么你文件中的地址行格式一定与你发布的地址行格式不太匹配。搜索定义uld必须更改以匹配文件中的格式。
<SMTP_Email_Address type="SZ">abc@abc.com</SMTP_Email_Address>
"SMTP_Email_Address *type=SZ *[^ ][^ ]*@[^ ][^ ]*\.[^ ][^ ]* *SMTP_Email_Address"
"^<SMTP_Email_Address *type=^"SZ^"^> *[^ ][^ ]*@[^ ][^ ]*\.[^ ][^ ]* *^<^/SMTP_Email_Address^>"
@echo off
pushd "your root location"
for /f "tokens=1,3 delims=:<>" %%A in (
'findstr /srbc:"<SMTP_Email_Address .*>[^ ][^ ]*@[^ ][^ ]*\.[^ ][^ ]*</SMTP_Email_Address>" file1.txt^|sort /r'
) do if exist "%%A" for %%F in ("%%A\..") do ren "%%~fF" "%%B"
popd
@echo off
setlocal
pushd "YourRootLocation"
set "search=<SMTP_Email_Address .*>[^ ][^ ]*@[^ ][^ ]*\.[^ ][^ ]*</SMTP_Email_Address>"
for /f "eol=: delims=" %%A in (
'findstr /srmbc:"%search%" file1.txt^|sort /r'
) do for /f "tokens=2 delims=<>" %%B in (
'findstr /rbc:"%search%" "%%A"'
) do if exist "%%A" for %%F in ("%%A\..") do if "%%~fF" neq "%CD%" (
echo ren "%%~fF" "%%B"
ren "%%~fF" "%%B"
)
popd