批处理命令修改指定文件夹内的内容

技术问题

批处理命令修改指定文件夹内的内容

2025-03-06 09:02


批处理命令修改指定文件夹内的内容

                                            




@echo off
setlocal enabledelayedexpansion
REM 定义要查找和替换的字符串
set "search=%%SYSDRV%%"
set "replace=E"
REM 创建一个临时文件
set "tempFile=002_temp.bat"
REM 读取002.bat内容并替换字符串
for /f "usebackq delims=" %%a in ("002.bat") do (
    set "line=%%a"
    set "line=!line:%search%=%replace%!"
    echo !line!>>"%tempFile%"
)
REM 删除原来的002.bat
del "002.bat"
REM 重命名临时文件为002.bat
ren "%tempFile%" "002.bat"
echo 替换完成。
pause
endlocal
 

以上是一个简单的 001.bat 脚本,它会自动将 002.bat 文件中的 %SYSDRV% 替换为 E:
请将这个脚本 使用ANSI编码 保存为 001.bat 并将其与 002.bat 放在同一个目录下,然后运行 001.bat。这个脚本会创建一个临时文件来保存修改后的内容,然后删除原来的 002.bat 文件并将临时文件重命名为 002.bat。这样就能实现自动替换 %SYSDRV% 为 E 的功能。
已知缺点 会把"!"替换掉 会把空行替换掉

方法二[推荐]使用powershell的命令行工具来进行替换:

Copy-Item -Path "002.bat" -Destination "002.bak"; (Get-Content -Path "002.bat") | ForEach-Object { $_ -replace '%SYSDRV%', 'E' } | Set-Content -Path "002.bat"

标签:
  • 批处理命令修改指定文件夹内的内容