找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 57634|回复: 19

[其他] 如何利用批处理根据TXT文件的内容,去同时修改bat文件内容的指定字段及其他文件的名称

[复制链接]
发表于 2021-11-23 09:52:58 | 显示全部楼层 |阅读模式
本帖最后由 alick 于 2021-11-23 14:41 编辑

各位大神:

请教大家,如何利用批处理根据TXT文件的内容,去同时修改bat文件内容的指定字段及其他文件的名称,例如:

在DIST目录下,存在三个文件
(1)go3\sop\chi\bbb.exe  [说明:go3文件夹每次是建立时的名称不同(从服务器下载的);SOP和CHI的名称是变化或不清楚(有可能是多层目录);但子目录下的的bbb.exe文件名是固定的。]
(2)aaa.bat,内容如下:
       %%i in ('dir XXX.exe /b /s')
(3)list.txt,内容如下(通过手工修改list.txt的内容,使LIST.TXT的内容与文件夹名称相同):
       go3

求批处理根据手工调整后的list.txt的内容,将对应目录内包含的bbb.exe文件名修改为list.txt的相同内容,如go3.exe。同时将aaa.bat内容中的XXX.exe也修改为对应的go3.exe。谢谢指教。
发表于 2021-11-23 10:41:30 | 显示全部楼层
  1. <#*,:&cls
  2. @echo off
  3. pushd "%~dp0"
  4. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath "%~0" -ReadCount 0 | Out-String ))) "
  5. popd
  6. pause
  7. exit /b
  8. #>
  9. $txt = "list.txt"
  10. $bbb = "bbb.exe"
  11. $aaa = "aaa.bat"

  12. $arr1 = Get-Content -Path $txt -ReadCount 0
  13. $goto3 = $arr1[0] + ".exe"
  14. foreach ($item in Convert-Path -Path ".\$($arr1[0])\*\*\$bbb") {
  15.   Rename-Item -Path $item -NewName $goto3 -Force
  16. }
  17. $arr2 = Get-Content -Path $aaa -ReadCount 0
  18. $arr2 -replace 'XXX\.exe', $goto3 | Set-Content -Path $aaa
复制代码
发表于 2021-11-23 11:35:34 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-11-23 12:42 编辑

回复 1# alick
你应当说明最终要实现什么目的,我觉得直接修改aaa.bat即可:
  1. set /p filename=<list.txt
  2. for /f "delims=" %%a in ('dir /b /s /a-d goto3\bbb.exe') do ren "%%a" "%filename%.exe"
  3. for /f "delims=" %%i in ('dir /b /s /a-d goto3\%filename%.exe') do ...
复制代码
实际上用一个for循环也可以定位重命名后的exe文件:
  1. set /p filename=<list.txt
  2. for /f "delims=" %%a in ('dir /b /s /a-d goto3\bbb.exe') do (
  3. ren "%%a" "%filename%.exe"
  4. echo,%%~dpa%filename%.exe
  5. )
复制代码
发表于 2021-11-23 12:40:09 | 显示全部楼层
刚才代码有点小错误,已重新修订。
 楼主| 发表于 2021-11-23 13:07:39 | 显示全部楼层
回复 2# flashercs

感谢flashercs的帮助,完美实现想要的结果
 楼主| 发表于 2021-11-23 13:11:27 | 显示全部楼层
也感谢qixiaobin0715的回复
 楼主| 发表于 2021-11-23 14:20:06 | 显示全部楼层
回复 2# flashercs

抱歉,刚才没有讲清楚,当GOTO3的文件夹名称改变时,我通过调整LIST.TXT的内容(按新的文件夹名称去填入),然后执行修改bbb.exe的名称和aaa.bat的内容。
 楼主| 发表于 2021-11-23 14:26:52 | 显示全部楼层
抱歉,我还是没有讲明白,我再整理一下思路,感谢!
 楼主| 发表于 2021-11-23 14:42:14 | 显示全部楼层
本帖最后由 alick 于 2021-11-23 14:41 编辑


各位大神:

请教大家,如何利用批处理根据TXT文件的内容,去同时修改bat文件内容的指定字段及其他文件的名称,例如:

在DIST目录下,存在三个文件
(1)go3\sop\chi\bbb.exe  [说明:go3文件夹每次是建立时的名称不同(从服务器下载的);SOP和CHI的名称是变化或不清楚(有可能是多层目录);但子目录下的的bbb.exe文件名是固定的。]
(2)aaa.bat,内容如下:
       %%i in ('dir XXX.exe /b /s')
(3)list.txt,内容如下(通过手工修改list.txt的内容,使LIST.TXT的内容与文件夹名称相同):
       go3

求批处理根据手工调整后的list.txt的内容,将对应目录内包含的bbb.exe文件名修改为list.txt的相同内容,如go3.exe。同时将aaa.bat内容中的XXX.exe也修改为对应的go3.exe。谢谢指教。
发表于 2021-11-23 15:43:04 | 显示全部楼层
1.DIST目录下是否只有一个文件夹。
2.最好将aaa.bat代码完整的贴出来,好知道你要实现什么目的。
可能的话,我觉得不需要list.txt,也不需要每次都修改批处理文件,即可实现你的目标。
 楼主| 发表于 2021-11-23 16:02:19 | 显示全部楼层
1.DIST目录下可以只有一个文件夹
2.aaa.bat的完整内容如下,目的是运行该程序
@echo off
for /f "delims=" %%i in ('dir xxx.exe /b /s') do start "" "%%i"
exit

谢谢!!
 楼主| 发表于 2021-11-23 16:04:33 | 显示全部楼层
更正一下,DIST目录下是有多个文件夹,所以才需要通过aaa.bat去运行对应的程序
发表于 2021-11-23 16:33:22 | 显示全部楼层
人机对话,手动输入文件夹名。未测试:
  1. @echo off
  2. set /p var=请输入指定文件夹名(比如:go3):
  3. for /f "delims" %%a in ('dir /s /b /a-d %var%\bbb.exe') do (
  4.     ren "%%a" "%var%.exe"
  5.     start "" "%%~dpa%var%.exe"
  6. )
  7. exit
复制代码
发表于 2021-11-23 16:33:48 | 显示全部楼层
回复 9# alick


    上面代码就是根据这要求来的
 楼主| 发表于 2021-11-23 17:04:18 | 显示全部楼层
可以按我的要求吗?否则每次运行都需要输入对应的文件夹名称,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 21:46 , Processed in 0.025444 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表