本帖最后由 滴血雄鹰 于 2019-3-14 16:06 编辑
批量修文件里的内容,以文件名替换,支持多个子文件夹的?
如:E:\0000\有多个文件夹名为1至100,在文件夹名为1至100下各有一个1.vmx至100.vmx文件,在vmx文件中都有9999的内容,要批量修改vmx文件里的内容9999,以vmx文件名替换,如何实现?(BAT放在E:\0000目录下)
E:\0000\1\1.vmx
...
E:\0000\100\100.vmx
----------------------------------------------------------------------------------------------
下面代码是只支持本目录下运行的,不支持子目录:
将 *.vmx改成E:\0000\*.vmx,也不行。- ::批量修改vmx文件里的内容9999,以vmx文件名替换
- @Echo Off
- SetLocal EnableDelayedExpansion
- For %%i In (*.vmx) Do (
- For /F "Usebackq Delims=" %%j In ("%%~nxi") Do (
- Set Str=%%j
- Echo !Str:9999=%%~ni!>>New_%%~nxi
- )
- Del %%~nxi >nul
- Ren New_%%~nxi %%~nxi
- )
复制代码 ----------------------------------------------------------------------------------------------
下面是用“目录名+文件名”来替换“111”- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
- set "filename=%%~a"
- set "filename=!filename:%~dp0=!"
- (for /f "usebackq delims=" %%b in ("%%~a") do (
- set "line=%%~b"
- call :getline "!filename!"
- echo.!line!
- ))>#
- move # "%%~a"
- )
- goto :eof
- :getline
- set "line=!line:111=%~1!"
复制代码 我只需要用“文件名”来替换“111”,怎么改?
|