返回列表 发帖
for /f 默认忽略分号开头的行 使用eol选项换成其他
例如换成忽略问号(?)开头的行
for /f "eol=? delims=" ........

TOP

本帖最后由 Five66 于 2025-1-27 15:56 编辑

找个不会出现在行开头的字符作为eol值
开头是行号,其实不用eol也行
已编辑
  1. @echo off
  2. set "PHP_INI_FILE=php.ini-dist"
  3. set "SEARCH_TEXT=; cgi.fix_pathinfo = 0"
  4. set "REPLACE_TEXT=cgi.fix_pathinfo = 1"
  5. (
  6. for /f "delims=" %%i in ('findstr /n .* "%PHP_INI_FILE%"') do (
  7. set "line=%%i"
  8. setlocal enabledelayedexpansion
  9. set "line=!line:*:=!"
  10. if /i "!line!" == "!SEARCH_TEXT!" (
  11. echo(!REPLACE_TEXT!||/ ^)
  12. ) else (
  13. echo(!line!||/ ^)
  14. )
  15. endlocal
  16. )
  17. )>"php.ini"
  18. pause&exit/b
复制代码

TOP

帮楼主发个个php.ini-dist文件
不知行否
https://gofile.io/d/v1V6Os

TOP

啊,楼主1楼例子的内容=号两边有空格
但是php.ini-dist里的=号两边是没有空格的
将19代码SEARCH_TEXT和REPLACE_TEXT =号两边的空格去掉 , 然后试试

TOP

回复 30# piazini
  1. @echo off
  2. set "PHP_INI_FILE=php.ini-dist"
  3. set "SEARCH_TEXT=; cgi.fix_pathinfo=0"
  4. set "REPLACE_TEXT=cgi.fix_pathinfo=1"
  5. (
  6. for /f "delims=" %%i in ('findstr /n .* "%PHP_INI_FILE%"') do (
  7. set "line=%%i"
  8. setlocal enabledelayedexpansion
  9. set "line=!line:*:=!"
  10. if /i "!line!" == "!SEARCH_TEXT!" (
  11. echo(!REPLACE_TEXT!||/ ^)
  12. ) else (
  13. echo(!line!||/ ^)
  14. )
  15. endlocal
  16. )
  17. )>"php.ini"
  18. pause&exit/b
复制代码

TOP

可还行
if exist 是使用变量的值判断文件 , 不是判断变量本身 , 变量是变量 , 文件是文件
执行 set file=win12.iso 并不会拥有win12的iso文件了 , 只会拥有值为win12.iso的变量

还是不行不如直接用记事本打开 , 然后查找替换

TOP

返回列表