如何用CMD/BAT批处理命令修改本目录下及所有子目录内的txt/ini格式的文本内容字符!
如文件名称为:!Setup.txt Config.ini 带有特殊!字符
如图:
可以使用for循环和findstr命令来实现
@echo off
setlocal enabledelayedexpansion
set "search=old_text"
set "replace=new_text"
for /r %%F in (*.txt *.ini) do (
echo Processing: %%F
set "tempFile=%%\~dpnF.tmp"
(
for /f "usebackq delims=" %%L in ("%%F") do (
set "line=%%L"
setlocal enabledelayedexpansion
echo !line:%search%=%replace%!
endlocal
)
) > "!tempFile!"
move /y "!tempFile!" "%%F" > nul
)
echo Done.
cmd本身应该不可以替换文件内容,只能枚举文件
你要替换文件内容,可以用c语言写一个小程序,让bat调用
要使用CMD/BAT批处理命令修改本目录下及所有子目录内的文本字符,可以使用for /R
命令递归遍历目录并对文件进行操作,结合其他命令来实现替换功能。下面是一个示例的CMD批处理命令:
@echo off
setlocal enabledelayedexpansion
set "search=要替换的文本"
set "replace=替换后的文本"
for /R %%F in (*.txt *.ini) do (
set "file=%%F"
echo 处理文件: !file!
rem 创建临时文件
set "tempfile=!file!.tmp"
del "!tempfile!" 2>nul
rem 逐行读取源文件并替换文本后写入临时文件
for /F "usebackq delims=" %%A in ("!file!") do (
set "line=%%A"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo !line!>>"!tempfile!"
endlocal
)
rem 删除源文件并将临时文件重命名为原文件名
del "!file!"
ren "!tempfile!" "%%~nxF"
)
endlocal
请将上述代码保存为一个批处理脚本文件(例如replace.bat
),然后将要替换的文本和替换后的文本分别赋值给search
和replace
变量。运行该批处理脚本文件后,它将遍历当前目录及所有子目录下的所有.txt
和.ini
文件,将指定的文本字符替换为指定的替换字符。
请注意,在替换过程中,它会创建临时文件来保存替换后的内容,并在完成后将临时文件重命名为原文件名。因此,请确保在运行脚本之前对文件进行备份,以防出现意外情况。
此外,请谨慎使用批处理命令,确保在测试和备份数据之后再进行操作。
参考
https://www.cnblogs.com/Chary/p/5825189.html
https://blog.csdn.net/usenk/article/details/128786710
要实现这个需求,可以使用以下步骤:
for /r %%i in (*.txt, *.ini) do (
REM 在这里编写需要执行的代码
)
set "file=%%i"
setlocal enabledelayedexpansion
set "newFile=!file:!=!"
ren "%%i" "!newFile!"
endlocal
set "file=%%i"
setlocal enabledelayedexpansion
set "content="
for /f "delims=" %%line in (!file!) do (
set "line=!line:!=!"
set "content=!content!!line!"
)
echo !content! > "!file!"
endlocal
请注意,这只是给出了一个示例,如果需要进行更复杂的操作,代码可能需要进行调整。另外,需要谨慎处理文件操作,确保备份数据以防止误操作。
如果以上解决方案无法满足需求,可以考虑使用其他编程语言或脚本来实现。
你的问题是要替换ini/txt后缀的文件名称,还是替换ini/txt文件里面的指定内容,替换文件内容,可以参考使用下面代码:
@echo off
setlocal EnableDelayedExpansion
set path_str="C:\Users\Administrator\Desktop\1.txt"
set old_str=需要替换的原文本内容
set new_str=替换后的文本内容
set souerce_path=%path_str%
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%souerce_path%"') do (
set "lineContent=%%j"
setlocal EnableDelayedExpansion
if not "!lineContent!"=="" set "lineContent=!lineContent:%old_str%=%new_str%!"
>>"temp.txt" echo.!lineContent!
endlocal
)
move /y temp.txt "%souerce_path%"
start mshta vbscript:CreateObject("Wscript.Shell").Popup(" 替换完成",5,"提示","64")(window.close)
要修改带有特殊字符的文件名,可以使用以下命令:
bash
@echo off
setlocal enabledelayedexpansion
rem 替换当前目录及其子目录中的文件名中的特殊字符
for /r %%f in (*)!* do (
set "filename=%%~nxf"
set "newfilename=!filename:!=!
if "!newfilename!" neq "!filename!" (
ren "%%~ff" "!newfilename!"
)
)
echo All files processed.
pause
@echo off
setlocal enabledelayedexpansion
set "folder=%cd%"
for /r "%folder%" %%f in (*.txt, *.ini) do (
set "file=%%~f"
set "tempfile=!file!_temp"
rem 读取文件内容并替换字符
(
for /f "usebackq delims=" %%c in ("!file!") do (
set "line=%%c"
set "line=!line:!=^^^!^!"
echo !line!
)
) > "!tempfile!"
rem 替换完毕后,将临时文件替换原文件
move /y "!tempfile!" "!file!" >nul
)
echo 修改完成!
替换文件内容的话,用python写更方便
@echo off
setlocal enabledelayedexpansion
set "search=要替换的文本"
set "replace=替换后的文本"
for /r %%G in (*.txt *.ini) do (
set "file=%%G"
set "temp=!file:%search%=%replace%!"
if not "!temp!"=="!file!" (
echo 替换文件: !file!
ren "!file!" "!temp!"
)
)
echo 替换完成!
pause
请将上述代码保存为一个批处理文件(例如replace_text.bat),然后将该批处理文件放置在需要修改的目录下,双击运行即可。
在代码中,你需要修改search和replace变量的值来指定要替换的文本和替换后的文本。在示例中,search变量设置为要替换的文本,replace变量设置为替换后的文本。
该批处理命令会递归遍历当前目录及其所有子目录中的.txt和.ini文件,并将其中的文本进行替换。替换后的文件会被重命名为临时文件名,以避免覆盖原始文件。如果需要保留原始文件,可以根据需要修改代码。
请注意,在运行批处理命令之前,建议先备份目标文件,以防止意外情况发生。望采纳
采用chatgpt:
你可以使用批处理脚本(.bat)来实现替换本目录及其子目录下所有txt和ini格式的文本文件中的字符。以下是一个示例批处理脚本来实现这个任务:
@echo off
setlocal enabledelayedexpansion
set "search=要查找的字符串"
set "replace=要替换的字符串"
set "fileTypes=*.txt *.ini"
for /r %%F in (%fileTypes%) do (
set "filePath=%%F"
setlocal disabledelayedexpansion
REM 获取文件名和扩展名
set "fileName=%%~nxF"
set "fileName=!fileName:^!=^^!"
REM 利用延迟扩展的变量替换进行文本替换
(for /f "tokens=* delims=" %%A in (!filePath!) do (
set "line=%%A"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
)) > "!fileName!.tmp"
REM 删除原文件并将临时文件重命名为原文件名
del "!filePath!" > nul
ren "!fileName!.tmp" "%%~nxF"
endlocal
)
echo 替换完成!
pause
在这个修改后的脚本中,我们使用了setlocal disabledelayedexpansion和endlocal来处理包含特殊字符的文件名。另外,为了正确处理包含"!"的文件名,我们还使用了set "fileName=!fileName:^!=^^!"来对"!"进行转义。
请按照之前的步骤将脚本保存为一个批处理文件(例如replace_text.bat),然后在要进行替换操作的目录中运行它。脚本将会递归地查找所有子目录下的txt和ini文件,并对它们进行文本替换。
请提前备份。
可以使用下面的批处理命令来替换本目录及其子目录下所有txt和ini文件中的文本字符:
@echo off
setlocal enableextensions enabledelayedexpansion
set "search=old_text"
set "replace=new_text"
for /r %%a in (*.txt *.ini) do (
set "file=%%a"
set "content="
for /f "usebackq delims=" %%b in ("!file!") do (
set "line=%%b"
set "line=!line:%search%=%replace%!"
set "content=!content!%%b\r\n"
)
(echo !content!) > "!file!"
)
echo Done.
将 "old_text"替换为要搜索的文本,将"new_text"替换为要替换的文本。
将上述代码复制到文本编辑器中,将文件类型更改为".bat"后,可以双击运行。
引用GPT回答:
@echo off
setlocal enabledelayedexpansion
set "search=old_string"
set "replace=new_string"
for /r %%G in (*) do (
set "file=%%G"
set "new_file=%%~nG.new%%~xG"
< "!file!" (
for /f "delims=" %%A in ('findstr /n "^"') do (
set "line=%%A"
setlocal disabledelayedexpansion
set "line=!line:*:=!"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
)
) > "!new_file!"
move /y "!new_file!" "!file!" > nul
)
endlocal
请将 "old_string" 替换为要替换的旧字符串,将 "new_string" 替换为新字符串。将上述代码保存为批处理文件(例如 "modify_text.bat"),然后将批处理文件放置在需要修改的目录中运行。
该脚本会遍历目录及其子目录中的所有文件,并打开每个文件以逐行检查并替换目标字符串。然后,它将修改后的内容写入一个新文件,并将新文件重命名为原文件名以覆盖原文件。
要使用CMD / BAT批处理命令修改当前目录及其子目录中的文件名称中的特定文本字符,您可以尝试以下步骤:
创建一个批处理文件:打开文本编辑器(例如记事本)并创建一个新的批处理文件(以.bat
为扩展名)。
编写批处理命令:在批处理文件中,使用以下命令来遍历当前目录及其子目录中的所有文件和文件夹:
@echo off
for /R %%F in (*) do (
REM 在这里添加修改文件名称的命令
)
!
字符替换为#
字符,可以使用以下命令:@echo off
for /R %%F in (*) do (
set "FileName=%%~nxF"
setlocal enabledelayedexpansion
set "NewFileName=!FileName:!=#!"
ren "%%F" "!NewFileName!"
endlocal
)
说明:
%%F
是当前正在处理的文件的占位符。%%~nxF
是从文件路径中提取出文件名和扩展名的特殊变量。setlocal enabledelayedexpansion
启用延迟变量扩展,以便在循环中使用变量 !
。请注意,以上示例仅将!
字符替换为#
字符,您可以根据您的需求修改这个示例以满足您的具体要求。
请注意,在运行批处理命令之前,建议在测试目录中备份相关文件,以防意外修改。一旦测试通过并确认无误,您可以在实际目录上运行批处理命令。