标题: [其他] 如何利用批处理根据TXT文件的内容,去同时修改bat文件内容的指定字段及其他文件的名称 [打印本页]
作者: alick 时间: 2021-11-23 09:52 标题: 如何利用批处理根据TXT文件的内容,去同时修改bat文件内容的指定字段及其他文件的名称
本帖最后由 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。谢谢指教。
作者: flashercs 时间: 2021-11-23 10:41
- <#*,:&cls
- @echo off
- pushd "%~dp0"
- powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
- popd
- pause
- exit /b
- #>
- $txt = "list.txt"
- $bbb = "bbb.exe"
- $aaa = "aaa.bat"
-
- $arr1 = Get-Content -Path $txt -ReadCount 0
- $goto3 = $arr1[0] + ".exe"
- foreach ($item in Convert-Path -Path ".\$($arr1[0])\*\*\$bbb") {
- Rename-Item -Path $item -NewName $goto3 -Force
- }
- $arr2 = Get-Content -Path $aaa -ReadCount 0
- $arr2 -replace 'XXX\.exe', $goto3 | Set-Content -Path $aaa
复制代码
作者: qixiaobin0715 时间: 2021-11-23 11:35
本帖最后由 qixiaobin0715 于 2021-11-23 12:42 编辑
回复 1# alick
你应当说明最终要实现什么目的,我觉得直接修改aaa.bat即可:- set /p filename=<list.txt
- for /f "delims=" %%a in ('dir /b /s /a-d goto3\bbb.exe') do ren "%%a" "%filename%.exe"
- for /f "delims=" %%i in ('dir /b /s /a-d goto3\%filename%.exe') do ...
复制代码
实际上用一个for循环也可以定位重命名后的exe文件:- set /p filename=<list.txt
- for /f "delims=" %%a in ('dir /b /s /a-d goto3\bbb.exe') do (
- ren "%%a" "%filename%.exe"
- echo,%%~dpa%filename%.exe
- )
复制代码
作者: qixiaobin0715 时间: 2021-11-23 12:40
刚才代码有点小错误,已重新修订。
作者: alick 时间: 2021-11-23 13:07
回复 2# flashercs
感谢flashercs的帮助,完美实现想要的结果
作者: alick 时间: 2021-11-23 13:11
也感谢qixiaobin0715的回复
作者: alick 时间: 2021-11-23 14:20
回复 2# flashercs
抱歉,刚才没有讲清楚,当GOTO3的文件夹名称改变时,我通过调整LIST.TXT的内容(按新的文件夹名称去填入),然后执行修改bbb.exe的名称和aaa.bat的内容。
作者: alick 时间: 2021-11-23 14:26
抱歉,我还是没有讲明白,我再整理一下思路,感谢!
作者: alick 时间: 2021-11-23 14:42
本帖最后由 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。谢谢指教。
作者: qixiaobin0715 时间: 2021-11-23 15:43
1.DIST目录下是否只有一个文件夹。
2.最好将aaa.bat代码完整的贴出来,好知道你要实现什么目的。
可能的话,我觉得不需要list.txt,也不需要每次都修改批处理文件,即可实现你的目标。
作者: alick 时间: 2021-11-23 16:02
1.DIST目录下可以只有一个文件夹
2.aaa.bat的完整内容如下,目的是运行该程序
@echo off
for /f "delims=" %%i in ('dir xxx.exe /b /s') do start "" "%%i"
exit
谢谢!!
作者: alick 时间: 2021-11-23 16:04
更正一下,DIST目录下是有多个文件夹,所以才需要通过aaa.bat去运行对应的程序
作者: qixiaobin0715 时间: 2021-11-23 16:33
人机对话,手动输入文件夹名。未测试:- @echo off
- set /p var=请输入指定文件夹名(比如:go3):
- for /f "delims" %%a in ('dir /s /b /a-d %var%\bbb.exe') do (
- ren "%%a" "%var%.exe"
- start "" "%%~dpa%var%.exe"
- )
- exit
复制代码
作者: flashercs 时间: 2021-11-23 16:33
回复 9# alick
上面代码就是根据这要求来的
作者: alick 时间: 2021-11-23 17:04
可以按我的要求吗?否则每次运行都需要输入对应的文件夹名称,谢谢!
作者: qixiaobin0715 时间: 2021-11-23 18:14
有时还要问清楚
1.当前文件夹中有多个文件夹,每个文件夹中的多层子文件夹中总会存在一个bbb.exe文件,是吗。
2.为什么要修改文件名呢?感觉修改文件名没意义啊。
作者: alick 时间: 2021-11-24 10:22
1.当前文件夹中有多个文件夹,每个文件夹中的多层子文件夹中总会存在一个bbb.exe文件,是吗。
是的,多个文件夹下面都bbb.exe
2.为什么要修改文件名呢?感觉修改文件名没意义啊。
我想了想,只要能通过list.txT的内容自动去修改set /p var=请输入指定文件夹名(比如:go3),就可以了.
@echo off
set /p var=请输入指定文件夹名(比如:go3):
for /f "delims" %%a in ('dir /s /b /a-d %var%\bbb.exe') do (
ren "%%a" "%var%.exe"
start "" "%%~dpa%var%.exe"
)
exit
作者: alick 时间: 2021-11-24 10:22
本帖最后由 alick 于 2021-11-24 10:27 编辑
1.当前文件夹中有多个文件夹,每个文件夹中的多层子文件夹中总会存在一个bbb.exe文件,是吗。
是的,多个文件夹下面都bbb.exe
2.为什么要修改文件名呢?感觉修改文件名没意义啊。
目的是想启动指定的文件夹下面的bbb.exe
作者: qixiaobin0715 时间: 2021-11-24 11:37
还是没明白你的意思:
1.既然是指定,就需要你输入文件夹名称,不然谁知道你要处理的是哪个文件夹的文件呢。你把指定文件夹放在list.txt中,不还是要输入文件夹名称吗?
2.没必要修改文件名bbb.exe,直接运行就行啊。
作者: alick 时间: 2021-11-24 12:26
本帖最后由 alick 于 2021-11-24 12:31 编辑
抱歉,是有些没有讲明白,或者换一个方式,可以帮忙实现吗?
用指定的内容(例如123.exe)去替换aaa.bat中的XXX.exe,同时将go3目录下的bbb.exe也改名为123.exe
感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |